Synonyme in elasticsearch verwenden

Lösung 1: Erfordert eine Änderung des erstellten benutzerdefinierten Analysators und das Hinzufügen dieses im Feldnamen

Punkt 1: Hinzufügen eines Kleinbuchstaben-Tokenizers im Mapping

Whitespace-Tokenizer konvertiert die Token nicht in Kleinbuchstaben. Und in der Liste der Synonyme haben Sie 'Television' hinzugefügt, aber Sie fragen 'television' ab.

Fügen Sie Ihrem Mapping wie folgt einen Token-Filter in Kleinbuchstaben hinzu, und Ihre Abfrage würde Ihnen das erwartete Ergebnis liefern.

Ziffer 2: Analyzer zum Feldnamen hinzufügen

Überprüfen Sie die prd_name wie ich in der folgenden Zuordnung erstellt habe. Beachten Sie, dass ich Analyzer hinzugefügt habe.

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 } } } } } }}

Beachten Sie, dass Sie bei jeder Änderung der Zuordnung den Index neu erstellen und die Dokumente erneut aufnehmen müssen.

Stellen Sie sicher, dass Ihre Synonym-Datei in allen Knoten verfügbar ist.

Lass es mich wissen, wenn es hilft.

Lösung 2: Standardanalysator neu definieren

Falls Sie die Zuordnung des Feldes nicht ändern können, können Sie in den Einstellungen

einen Analysator mit dem Namen default erstellen Im Grunde neu definieren des Analysators default mit Einstellungen genau wie Analysator synonym.

Auf diese Weise wäre es der Standardanalysator, der anstelle von standard analyzer verwendet wird und keine Änderung der Zuordnung des Feldnamens erfordert.

Unten ist, wie die Zuordnung in diesem Fall aussehen würde.

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 } } } } } }}

Beachten Sie, dass ich im Mapping einfach synonym in default umbenannt habe.

Wichtiger Hinweis: Irgendwie müssten Sie alle Daten neu indizieren, damit die Änderungen wirksam werden. Für den Fall, dass Sie die Zuordnung ändern, alle Daten neu indizieren und alles tun können, was Sie mit Feldnamen möchten, empfehle ich dringend Lösung 1.

Lass es mich wissen, wenn das hilft 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Related Posts