Always build up your logic bit by bit. Don't just bang it all in at once. 
Once you understand how individual components evaluate you will be able to 
build a working complex query.

https://gist.github.com/yarekt/4bd8e0bccc8ca694c855


On Sunday, 13 July 2014 00:14:34 UTC+1, Artem Frolov wrote:
>
> Community, answer my question please! It's an actual problem still. :(
>
> пятница, 11 июля 2014 г., 17:15:04 UTC+3 пользователь Artem Frolov написал:
>>
>> I've done what you want.
>> Mapping and populating data GIST: 
>> https://gist.github.com/ArFeRR/3031c1ce8f95549ad86d
>>
>> GIST with my search query: 
>> https://gist.github.com/ArFeRR/f69ebe24ddc543b7bffd
>>
>> (it have to return one record with resolution:1920x1080 and weight: 2,9 
>> kg. It's the notebook with the name "Lenovo IdeaPad Z710A")
>> but it returns empty.
>>
>> Please help to achieve the behaviour what i need!
>>
>> пятница, 11 июля 2014 г., 11:48:40 UTC+3 пользователь David Pilato 
>> написал:
>>>
>>> A full script would allow any user on the mailing list to recreate from 
>>> scratch your issue without the need of building a script by ourselves which 
>>> is really time consuming.
>>>
>>> So, basically a script should look like this:
>>>
>>> // Remove test data
>>> DELETE test
>>>
>>> // If needed, add your settings/mappings
>>> PUT test
>>> {
>>>   "settings": {},
>>>   "mappings": {}
>>> }
>>>
>>> // Index some data
>>> PUT test/doc/1
>>> {
>>>   "foo":"bar"
>>> }
>>>
>>> PUT test/doc/x?refresh
>>> {
>>>   "foo":"bar"
>>> }
>>>
>>> // Run the query
>>> GET test/doc/_search
>>> {
>>> }
>>>
>>> With that, we can definitely help you I think.
>>>
>>> -- 
>>> *David Pilato* | *Technical Advocate* | *Elasticsearch.com*
>>> @dadoonet <https://twitter.com/dadoonet> | @elasticsearchfr 
>>> <https://twitter.com/elasticsearchfr>
>>>
>>>
>>> Le 11 juillet 2014 à 10:44:01, Artem Frolov ([email protected]) a écrit:
>>>
>>>  Can you answer what's wrong with the gist, i've provided? I can't 
>>> figure out...
>>> I provide you all the data I have, related to this issue. Look:
>>> 1) The elasticsearch index, containing the products and its options, 
>>> which have to be filtered: 
>>> https://gist.github.com/ArFeRR/de86b8b0a5f2bc7dfd86
>>> 2) The JSON query for the filtration: 
>>> https://gist.github.com/ArFeRR/e159ef1047122a617b88
>>> 3)The ELastica.io code to genereate the json above on PHP:
>>> https://gist.github.com/ArFeRR/cebb2bf54232069d817b#file-gistfile1-php
>>>
>>> (I've changed the data to make it more real)
>>>
>>> All the json works fine, i've tested it! Can't figure out what's wrong 
>>> and what I have to do to provide a "FULL working GIST" for you
>>>
>>>
>>>
>>> четверг, 10 июля 2014 г., 18:37:19 UTC+3 пользователь David Pilato 
>>> написал: 
>>>>
>>>>  Have a look at this page to see how you can build a full working GIST 
>>>> which could help us to reproduce your use case.
>>>>  
>>>>  When your GIST will be updated, please update this thread so I can 
>>>> look at it.
>>>>
>>>>      -- 
>>>> *David Pilato* | *Technical Advocate* | *Elasticsearch.com* 
>>>>  @dadoonet <https://twitter.com/dadoonet> | @elasticsearchfr 
>>>> <https://twitter.com/elasticsearchfr>
>>>>  
>>>>        
>>>> Le 10 juillet 2014 à 11:59:22, Artem Frolov ([email protected]) a écrit:
>>>>
>>>>  the GIST:
>>>>  https://gist.github.com/ArFeRR/630acb216b8d95168b73
>>>>
>>>> четверг, 10 июля 2014 г., 12:51:49 UTC+3 пользователь Artem Frolov 
>>>> написал: 
>>>>>
>>>>> here's my try to solve it:
>>>>>
>>>>> {
>>>>>    "filtered":{
>>>>>       "filter":{
>>>>>          "nested":{
>>>>>             "path":"productsOptionValues",
>>>>>             "filter":{
>>>>>                "and":[
>>>>>                   {
>>>>>                      "or":[
>>>>>                         {
>>>>>                            "and":[
>>>>>                               {
>>>>>                                  "term":{
>>>>>                                     
>>>>> "productsOptionValues.productOption":"weight"
>>>>>                                  }
>>>>>                               },
>>>>>                               {
>>>>>                                  "term":{
>>>>>                                     "productsOptionValues.value":
>>>>> "500 kg"
>>>>>                                  }
>>>>>                               }
>>>>>                            ]
>>>>>                         },
>>>>>                         {
>>>>>                            "and":[
>>>>>                               {
>>>>>                                  "term":{
>>>>>                                     
>>>>> "productsOptionValues.productOption":"weight"
>>>>>                                  }
>>>>>                               },
>>>>>                               {
>>>>>                                  "term":{
>>>>>                                     "productsOptionValues.value":
>>>>> "50kg"
>>>>>                                  }
>>>>>                               }
>>>>>                            ]
>>>>>                         }
>>>>>                      ]
>>>>>                   },
>>>>>                   {
>>>>>                      "or":[
>>>>>                         {
>>>>>                            "and":[
>>>>>                               {
>>>>>                                  "term":{
>>>>>                                     
>>>>> "productsOptionValues.productOption":"magic"
>>>>>                                  }
>>>>>                               },
>>>>>                               {
>>>>>                                  "term":{
>>>>>                                     "productsOptionValues.value":"no"
>>>>>                                  }
>>>>>                               }
>>>>>                            ]
>>>>>                         }
>>>>>                      ]
>>>>>                   }
>>>>>                ]
>>>>>             }
>>>>>          }
>>>>>       }
>>>>>    }
>>>>> }
>>>>>
>>>>> but it's an equivalent of:
>>>>>
>>>>> WHERE ((option = "weight" AND value = "50kg")OR (option = "weight" AND 
>>>>> value = "500kg"))AND (option = "magic" AND value = "no")
>>>>>
>>>>> it's wrong tree... I need the and\or logic to be at one branch of the 
>>>>> json tree. I don't know if it possible. Please help to translate the 
>>>>> logic from the query where condition!
>>>>>
>>>>>
>>>>> четверг, 10 июля 2014 г., 12:23:05 UTC+3 пользователь David Pilato 
>>>>> написал: 
>>>>>>
>>>>>>  It could help if you could gist a full SENSE/curl script recreation
>>>>>>
>>>>>> Best
>>>>>>
>>>>>> --
>>>>>> David ;-) 
>>>>>> Twitter : @dadoonet / @elasticsearchfr / @scrutmydocs
>>>>>>  
>>>>>> Le 10 juil. 2014 à 11:15, Artem Frolov <[email protected]> a écrit :
>>>>>>
>>>>>>   I have a WHERE clause in my SQL query, which have to be translated 
>>>>>> into the elasticsearch bool filter.
>>>>>>
>>>>>> here's the where clause:
>>>>>>
>>>>>> WHERE (option = "weight" AND value = "50kg")OR (option = "weight" AND 
>>>>>> value = "500kg")AND (option = "magic" AND value = "no")
>>>>>>
>>>>>> I have written the AND filters for inner ANDs of query, but now I 
>>>>>> need to put them to the bool filter.
>>>>>>
>>>>>> Tried to:
>>>>>>
>>>>>> $boolFilter = new 
>>>>>> \Elastica\Filter\Bool();$boolFilter->addShould($innerFilterAnd1);$boolFilter->addShould($innerFilterAnd2);$boolFilter->addMust($innerFilterAnd3);
>>>>>>
>>>>>> returns nothing.
>>>>>>
>>>>>> Please, help!
>>>>>>  --
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "elasticsearch" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/elasticsearch/5291b465-50d1-42da-a8a0-45ee154c1838%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/elasticsearch/5291b465-50d1-42da-a8a0-45ee154c1838%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>  
>>>>>>   --
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "elasticsearch" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/elasticsearch/70db39db-2317-46bc-a2a9-6011f454b46d%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/elasticsearch/70db39db-2317-46bc-a2a9-6011f454b46d%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>  
>>>>   --
>>> You received this message because you are subscribed to the Google 
>>> Groups "elasticsearch" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/elasticsearch/1ee83ee3-09a6-414f-87fe-faf9f97d06a6%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/elasticsearch/1ee83ee3-09a6-414f-87fe-faf9f97d06a6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/78bbc2e6-5d8b-4ffc-b35e-b8e2315d734e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to