Správný mapping je klíčový pro efektivní vyhledávání.
Typy¶
- text — full-text
- keyword — exact match, agregace
- integer/float
- date
- nested
- geo_point
Mapping¶
PUT /articles { “mappings”: { “properties”: { “title”: {“type”:”text”,”analyzer”:”czech”}, “slug”: {“type”:”keyword”}, “tags”: {“type”:”keyword”}, “published_at”: {“type”:”date”} }}}
Best practices pro mapping¶
Při návrhu mappingu vždy používejte keyword typ pro pole, podle kterých filtrujete nebo agregujete (tagy, statusy, identifikátory). Typ text používejte pouze pro pole, ve kterých potřebujete full-text vyhledávání. Pro pole jako titulek, kde potřebujete obojí, použijte multi-field mapping s text i keyword subtypem.
Pozor na mapping explosion — pokud dynamicky přidáváte stovky nových polí, Elasticsearch spotřebuje velké množství paměti na metadata. Nastavte dynamic na strict nebo false pro produkční indexy. Pro česká data používejte analyzér s českým stemmerem a stop slovy, což výrazně zlepší relevanci výsledků vyhledávání.
Mapping = základ¶
Definujte explicitně. Dynamic = jen prototypy.