Elasticsearch zählt Begriffe, die Leerzeichen ignorieren

8

Verwenden von ES 1.2.1

Meine Aggregation

%Vor%

}

Das Problem ist, dass einige Stadtnamen Leerzeichen enthalten und separat aggregieren.

Zum Beispiel Los Angeles

%Vor%

Ich nehme an, es hat mit dem Analysator zu tun? Welchen würde ich verwenden, um nicht auf Räume zu teilen?

    
user432024 12.06.2014, 16:25
quelle

2 Antworten

9

Für Felder, für die Sie Aggregationen durchführen möchten, würde ich entweder das Schlüsselwort analyzer empfehlen oder das Feld überhaupt nicht analysieren. Aus der Keyword-Analyzer-Dokumentation:

  

Ein Analysator vom Typ keyword, der einen gesamten Stream als einzelnes Token "tokenisiert". Dies ist nützlich für Daten wie Postleitzahlen, IDs und so weiter. Beachten Sie, dass es bei der Verwendung von Mapping-Definitionen sinnvoller ist, das Feld einfach als not_analyzed zu markieren.

Wenn Sie jedoch eine Analyse für das Feld durchführen möchten, um sie für andere Suchvorgänge einzubeziehen, sollten Sie die Feldeinstellung von ES 1.x verwenden. Wie in field / multi_field Dokumentation . Auf diese Weise können Sie einen Wert für das Suchfeld und einen für die Aggregation festlegen.

    
Paige Cook 12.06.2014, 16:35
quelle
6

Es gibt 2 Ansätze, um das zu lösen.

  1. Der nicht-analysierte Weg - Aber das wird nicht unterschiedliche Kapital- und Kleinfälle berücksichtigen
  2. Der Schlüsselwort Tokenizer Weg - Hier können wir verschiedene Begriffe mit zuordnen anderer Fall als einer.

Diese beiden Konzepte mit funktionierenden Codebeispielen werden in diesem Blog erläutert.

    
Vineeth Mohan 10.09.2015 04:25
quelle