Elasticsearch
Analizatory
Szukaj…
Uwagi
Analizatory pobierają tekst z pola ciągu i generują tokeny, które będą używane podczas wysyłania zapytań.
Analizator działa w sekwencji:
-
CharFilters(zero lub więcej) -
Tokenizer(jeden) -
TokenFilters(zero lub więcej)
Analizator można zastosować do odwzorowań, aby podczas indeksowania pól było to wykonywane osobno, a nie jako ciąg znaków jako całość. Podczas zapytania łańcuch wejściowy będzie również uruchamiany przez analizator. Dlatego jeśli znormalizujesz tekst w Analizatorze, zawsze będzie on pasował, nawet jeśli zapytanie zawiera nienormalizowany ciąg.
Mapowanie
Analizator można zastosować do mapowania przy użyciu „analizatora”, domyślnie używany jest „standardowy” analizator. Alternatywnie, jeśli nie chcesz używać żadnego analizatora (ponieważ tokenizacja lub normalizacja nie byłaby przydatna), możesz podać „index”: „not_analyzed”
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "my_user_name_analyzer"
},
"id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
Wiele pól
Czasami może być przydatne posiadanie wielu różnych indeksów pola z różnymi analizatorami. W tym celu można użyć funkcji wielu pól.
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "standard",
"fields": {
"special": {
"type": "string",
"analyzer": "my_user_name_analyzer"
},
"unanalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
Podczas wysyłania zapytań zamiast po prostu użyć „user.name” (który w tym przypadku nadal używałby standardowego analizatora), możesz użyć „user.name.special” lub „user.name.unanalyzed”. Pamiętaj, że dokument pozostanie niezmieniony, wpływa to tylko na indeksowanie.
Analizatory
Analiza w elasticsearch pojawia się w kontekście, gdy chcesz przeanalizować dane w indeksie.
Analizatory pozwalają nam wykonywać następujące czynności:
- Skróty
- Przybitka
- Obsługa literówek
Będziemy teraz patrzeć na każdą z nich.
Skróty :
Za pomocą analizatorów możemy powiedzieć elasticsearch, jak traktować skróty w naszych danych, tj. Dr => Doctor, więc za każdym razem, gdy szukamy słowa kluczowego doctor w naszym indeksie, elasticsearch zwróci również wyniki, które zawierają w nich dr.
Stemming :
Używanie wyrażeń w analizatorach pozwala nam używać słów podstawowych dla czasowników zmodyfikowanych, takich jak
Słowo Modyfikacje wymagać wymagany, wymagany
Obsługa literówek :
Analizatory zapewniają również obsługę literówek, ponieważ podczas wyszukiwania określonego słowa powiedz „zmartwychwstanie”, wówczas elasticsearch zwróci wyniki, w których występują literówki. To potraktuje literówki jak resurection, ressurection tak samo i zrestartuje wynik.
Słowo Modyfikacje zmartwychwstanie rezurekcja, rezurekcja
Analizatory w Elasticsearch
Standard
Prosty
Biała przestrzeń
Zatrzymać
Słowo kluczowe
Wzór
Język
Śnieżna kula
Zignoruj analizator przypadków
Czasami możemy zignorować przypadek naszego zapytania w odniesieniu do dopasowania w dokumencie. W tym przypadku można użyć analizatora do zignorowania przypadku podczas wyszukiwania. Każde pole będzie musiało zawierać ten analizator w swojej właściwości, aby działać:
"settings": {
"analysis": {
"analyzer": {
"case_insensitive": {
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
}