08 - Request body search

 

Query string bohužel nedokáže pokrýt všechny možnosti vyhledávání, kterými Elasticsearch disponuje. Proto budeme dále queries zapisovat do těla requestu, což se označuje jako Query DSL

 

Filtrování dat vs full textové vyhledávání

Obecně je v Elasticsearch rozdíl mezi filtrováním dat a fulltextovým vyhledáváním.

V prvním případě nás zajímá pouze, zda daný výraz odpovídá dotazu, nebo ne. Příkladem takového filtru může být filtrování podle daného číselného rozsahu. Výsledky filtrování je možné efektivně cachovat.

V druhém případě hledáme odpověď na otázku jak moc daný dokument odpovídá vyhledávacímu dotazu.

Abychom rozlišily oba způsoby, budeme používat rozdílné mapování, ale také rozdílné vyhledávací dotazy.

 

Term-level queries

Nejčastěji používané term-level queries jsou:

Kompletní seznam term-level queries naleznete v dokumentaci.

 

Compound queries

Compound queries samy o sobě neumožňují vyhledávat nebo filtrovat data, ale umožňují nám spojit více samostatných queries do jedné velké query.

 

Úkol: Term-level a compound queries

Použijte index reviews vytvořený v předchozí kapitole.

  1. Vyhledejte dokumenty obsahující e-mailovou adresu (v poli email) emanuel.s@yahoo.com
  2. Vyhledejte dokumenty s hodnocením (rating) větším než 2
  3. Vyhledejte dokumenty, kde email začíná tom
  4. Vyhledejte dokumenty obsahující 8 Ball Pool nebo Yes Chef!
  5. Vyhledejte dokumenty, kde je customer_id vyšší než 13000000, nebo je date novější než 2022-02-20

 

Full text queries

Full textové dotazy jsou zpravidla používány v kombinaci s datovým typem text. Jejich chování je ovlivněno nastavením textové analýzy, která může být nastavena pro každé pole jinak.

 

Request body search v Kibaně

Query v JSON formátu lze využít i v Kibaně pro filtrování dat. V Discover klikněte na + Add filter a poté na Edit as Query DSL. Zde můžete vložit libovolnou query (která by jinak byla pod klíčem query v GET requestu).

Discover_-_Elastic-5386074

Discover_-_Elastic-5386171

 

Znovu vyhledejte v indexu reviews:

  1. Vyhledejte všechny dokumenty vytvořené s e-mailem z domény gmail.com (použijte match query)
  2. Vyhledejte full textově fun ball game v polích title a comments
  3. Vyhledejte ball game v poli title; zároveň také vyfiltrujte na dokumenty s rating vyšším než 3