użyj synonimów w elasticsearch

rozwiązanie 1: wymaga zmiany w utworzonym niestandardowym analizatorze i dodania, że w nazwie pola

punkt 1: Dodaj Tokenizer małych liter w mapowaniu

Tokenizer białych znaków nie przekonwertuje tokenów na małe litery. A na liście synonimów dodałeś 'Television' ale pytasz 'television'.

Dodaj filtr małych liter w mapowaniu w następujący sposób, a zapytanie da oczekiwany wynik.

pkt 2: Dodaj analizator do nazwy pola

Sprawdź prd_name jak utworzyłem w poniższym mapowaniu. Zauważ, że dodałem do niego analyzer.

mapowanie

PUT products{ "settings":{ "index":{ "analysis":{ "analyzer":{ "synonym":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "analyzer":"synonym", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

zwróć uwagę, że każda zmiana mapowania wymaga odtworzenia indeksu i ponownego pobrania dokumentów.

upewnij się, że plik synonimu jest dostępny we wszystkich węzłach.

daj znać, jeśli to pomoże.

Rozwiązanie 2: Przedefiniuj domyślny analizator

w przypadku, gdy nie możesz zmienić mapowania pola, możesz utworzyć analizator o nazwie default w Ustawieniach

zasadniczo przedefiniuj analizator defaultz ustawieniami dokładnie tak, jak analizator synonym.

w ten sposób byłby to domyślny analizator, który byłby używany zamiast analizatora standard i nie wymaga zmiany mapowania nazwy pola.

Poniżej znajduje się sposób mapowania w tym przypadku.

mapowanie

PUT <your_index_name>{ "settings":{ "index":{ "analysis":{ "analyzer":{ "default":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

zauważ, że po prostu zmieniłem synonym na default w mapowaniu.

Ważna uwaga: w jakiś sposób trzeba by przeindeksować wszystkie dane, aby zmiany weszły w życie. W przypadku, jeśli nie wymyślić konieczności zmiany mapowania, Redex wszystkie dane, i można zrobić wszystko, co chcesz w. R. T nazwy pól, to zdecydowanie proponuję rozwiązanie 1.

daj znać, jeśli to pomoże 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Related Posts