oplossing 1: vereist wijziging in aangepaste analyzer gemaakt en toevoegen dat in veldnaam
punt 1: voeg kleine letters tokenizer in afbeelding
witruimte tokenizer zou de tokens niet omzetten in kleine letters. En in de lijst met synoniemen hebt u 'Television'
toegevoegd, maar zoekt u 'television'
.
voeg kleine letters Tokenfilter als volgt toe aan uw toewijzing en uw query geeft u het verwachte resultaat.
punt 2: Analyzer toevoegen aan het veld-Naam
controleer de prd_name
als hoe Ik heb gemaakt in de onderstaande toewijzing. Merk op dat ik analyzer heb toegevoegd.
Mapping
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 } } } } } }}
merk op dat elke mapping wijziging vereist dat u de index opnieuw maakt en de documenten opnieuw inslikt.
zorg ervoor dat uw synoniembestand beschikbaar is in alle knooppunten.
laat het me weten als het helpt.
oplossing 2: Define default analyzer
in het geval dat u de toewijzing van het veld niet kunt wijzigen, kunt u een analyzer aanmaken met naam default
in de Instellingen
.
op die manier zou het de standaard analyzer zijn die gebruikt zou worden in plaats van standard
analyzer en vereist geen wijziging in de toewijzing van veldnaam.
hieronder staat hoe de mapping in dat geval zou zijn.
Mapping
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 } } } } } }}
merk op dat ik eenvoudig synonym
naar default
heb hernoemd in de mapping.
belangrijke opmerking: op de een of andere manier moet u alle gegevens opnieuwdexeren voordat de wijzigingen van kracht zijn. In het geval als je komt met het hebben van mapping veranderen, reindex alle gegevens, en je kunt alles doen wat je zou willen w.r.t veldnamen, dan stel ik oplossing 1.
laat het me weten als dit helpt:)