ich ein Bündel von Dokumenten mit einem Array-Feld wie dieses:Elasticsearch Begriffe Filter liefert keine Ergebnisse
{ "feed_uids": ["math.CO", "cs.IT"] }
Ich mag würde alle Dokumente finden, die auch nur einen Teil dieser Werte enthalten das heißt, sie als Tags behandeln. Die Dokumentation führt zu der Annahme, dass ein Begriffsfilter funktionieren sollte:
{ "query": { "filtered": { "filter": { "terms": { "feed_uids": [ "cs.IT" ] } } } } }
Die Abfrage stimmt jedoch mit nichts überein. Was mache ich falsch?
Wenn Sie machen einen Terms-Filter. Die Spalte, die Sie filtern möchten, sollte analysiert werden. Ist das Feld feeds_uids für die Analyse festgelegt? Wenn ja, welcher Analysator benutzt es? Können Sie testen, welche Token zurückgegeben werden, wenn Sie die Zeichenfolge cs.IT an den Analysator übergeben. Sie können die Rückgabedaten des Analysators folgendermaßen testen: localhost: 9200/{Ihr Indexname}/_ analyze? Analyzer = {Name Ihres Analysators} & text = cs.IT. –
Ich habe gerade Ihren Text durch den Standard-Schneeball-Analysator ausgeführt und folgende Token-Antwort erhalten, {"Token": [{"token": "cs.it", "start_offset": 0, "end_offset": 5, "type ":" "," position ": 1}]}, so scheint die Tokenisierung Ihres Textes korrekt zu sein, also kann ich mir nur vorstellen, dass das Feld feed_uids nicht auf Analyse eingestellt ist. –