I will explain more clearly now. In the input I have formula field with this type of data. I am changing it into equivalent ES query through perl and want to replace in the ES

((column08=Submit | column10=Delivered | column09=Something) & (column +08=Delivered | column09=Something))

Need to replace with

{'query' => {'constant_score' => {'filter' => {'bool' => {'should' => +[{'bool' => {'must' => [{'term' => {'column08' => 'Submit'}},{'term' +=> {'column10' => 'Delivered'}},{'term' => {'column09' => 'Something' +}}]}},{'bool' => {'must' => [{'term' => {'column08' => 'Delivered'}}, +{'term' => {'column09' => 'Something'}}]}}]}}}}}

This is for one cell. In the input we can get multi sheets with multi cells in a single book (Excel). We have replace all cells in that.

I am changing the input into the format what i need as in the output.

{ "sheets": { "sheet1": { "Sheet_Name": "Ex-Sheet", "forumle": [ { "0": { "colName": "Ex-Col1", "formula": "
((column08=Submit | column10=Delivered | column09=Something) & (column08=Delivered | column09=Something))
", "total": "false" }, "1": { "colName": "Ex-Col1", "formula": "
((column08=Submit | column10=Delivered | column09=Something) & (column08=Delivered | column09=Something))
", "total": "false" }, "2": { "colName": "Ex-Col1", "formula": "
(column08=Submit & column10=Delivered & column09=Something)
", "total": "false" } } ] } } }
My code

getting the input into

$doc

from the ES

Loop for getting all the conditions

foreach my $sheet (keys %{ $doc->{'_source'}{'sheets'} }) { foreach my $columns (@{ $doc->{'_source'}{'sheets'}{$sheet}{'forum +le'} }) { foreach my $one (keys %{ $columns }) { $condition = $columns->{$one}{'formula'}; $return_value = function_to_change($condition); #H +ere I am changing my condition into required output $main_hash{"query"}{"constant_score"}{"filter"} = +{$return_value}; #Adding some more data for that $columns->{$one}{'formula'} = \%main_hash #Wha +t to replace that in the original doc } } }

In the last line of my code I am replacing the existing field with a hash. But its working only for the first iteration of the loop. In the second iteration its showing like

'bool' => { 'should' => [ $VAR1->{'_source'}{'sheets'}{'sheet1'}{' +forumle'}[0]{'1'}{'formula'}{'query'}{'constant_score'}{'filter'}{'bo +ol'}{'should'}[0], $VAR1->{'_source'}{'sheets'}{'sheet1'}{'f +orumle'}[0]{'1'}{'formula'}{'query'}{'constant_score'}{'filter'}{'boo +l'}{'should'}[1]]}

instead of

{"query":{"constant_score":{"filter":{"bool":{"should":[{"bool":{"must +":[{"term":{"column08":"Submit"}},{"term":{"column10":"Delivered"}},{ +"term":{"column09":"Something"}}]}},{"bool":{"must":[{"term":{"column +08":"Delivered"}},{"term":{"column09":"Something"}}]}},{"bool":{"must +":[{"term":{"column08":"Submit"}},{"term":{"column10":"Delivered"}},{ +"term":{"column09":"Something"}}]}},{"bool":{"must":[{"term":{"column +08":"Delivered"}},{"term":{"column09":"Something"}}]}}]}}}}}
But When Dump the hash or converted into json & print Its looking fine. but When I assigned it to a hash It looking like that $var->. How do assign that

In reply to Re^6: Return value of Search::Elasticsearch search query by ravi45722
in thread Return value of Search::Elasticsearch search query by ravi45722

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.