Ik ben met ElasticSearch bezig. Nog niet zo ervaren, maar begin het te leren 
Stuit nu op een probleem waar ik nog geen oplossing voor gevonden heb. De zoekwoorden zijn ook wat lastig in deze, omdat woorden als NOT e.d. nogal veel gebruikt worden in functies van ElasticSearch die ik niet nodig denk te hebben. Verder bevat de ElasticSearch site vooral veel syntax pagina's maar geen echt goede examples.
Ter illustratie heb ik een database met huisjes. Deze huisjes hebben 1 of meerdere kenmerken die in een array zijn ingelezen in ElasticSearch:
mogelijke kenmerken zijn:
rood, 6-persoons, garage, openhaard, oprijlaan, groentetuin, geel, koop, huur
Nu heb je bijv. de volgende drie huisjes:
huis 1 - rood, oprijlaan
huis 2 - rood
huis 3 - groentetuin, garage, huur
Nu wil ik alle huisjes die minimaal 1 kenmerk hebben die niet gelijk is aan "rood"... in dit geval dus huis 1 en huis 3.... maar ik krijg het met elastic search niet voor elkaar.
Het lijkt een eenvoudige zin hierboven, die je zo in een SQL query om kunt zetten (uiteraard op meerdere manieren mogelijk):
Heb het bij ElasticSearch geprobeerd met de must, must_not, should en diverse andere variaties.
Heb ook gedacht: Geef me alle huisjes waar rood niet voorkomt (must_not) (huisje 3) + alle huisjes met minimaal 2 kenmerken (huisje 1 en 3).... dan krijg ik het gewenste resultaat.... maar ook geen idee hoe ik daar ga komen
iemand enig idee of schop in de goede richting voor mij?
Stuit nu op een probleem waar ik nog geen oplossing voor gevonden heb. De zoekwoorden zijn ook wat lastig in deze, omdat woorden als NOT e.d. nogal veel gebruikt worden in functies van ElasticSearch die ik niet nodig denk te hebben. Verder bevat de ElasticSearch site vooral veel syntax pagina's maar geen echt goede examples.
Ter illustratie heb ik een database met huisjes. Deze huisjes hebben 1 of meerdere kenmerken die in een array zijn ingelezen in ElasticSearch:
mogelijke kenmerken zijn:
rood, 6-persoons, garage, openhaard, oprijlaan, groentetuin, geel, koop, huur
Nu heb je bijv. de volgende drie huisjes:
huis 1 - rood, oprijlaan
huis 2 - rood
huis 3 - groentetuin, garage, huur
Nu wil ik alle huisjes die minimaal 1 kenmerk hebben die niet gelijk is aan "rood"... in dit geval dus huis 1 en huis 3.... maar ik krijg het met elastic search niet voor elkaar.
Het lijkt een eenvoudige zin hierboven, die je zo in een SQL query om kunt zetten (uiteraard op meerdere manieren mogelijk):
code:
1
| SELECT * FROM huisjes LEFT JOIN kenmerken ON kenmerken.kenmerk != 'rood' and huisjes.id = kenmerken.huisjeid WHERE kenmerken.id IS NOT NULL |
Heb het bij ElasticSearch geprobeerd met de must, must_not, should en diverse andere variaties.
Heb ook gedacht: Geef me alle huisjes waar rood niet voorkomt (must_not) (huisje 3) + alle huisjes met minimaal 2 kenmerken (huisje 1 en 3).... dan krijg ik het gewenste resultaat.... maar ook geen idee hoe ik daar ga komen
iemand enig idee of schop in de goede richting voor mij?