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.
