Wie kann ich eine ElasticSearch-Aggregation schreiben, die die Buckets durch den gesamten Begriff statt einzelne Token teilt? Zum Beispiel würde Ich mag von Staat aggregieren, aber der folgende Code gibt neu, york, Jersey und Kalifornien als einzelne Eimer, nicht New Yorker und New Jersey und Kalifornien wie die Eimer wie erwartet:Elasticsearch Begriffe Aggregation von Strings in einem Array
curl -XPOST "http://localhost:9200/my_index/_search" -d'
{
"aggs" : {
"states" : {
"terms" : {
"field" : "states",
"size": 10
}
}
}
}'
Mein Anwendungsfall ist wie der hier beschriebene https://www.elastic.co/guide/en/elasticsearch/guide/current/aggregations-and-analysis.html mit nur einem Unterschied: das Stadtfeld ist ein Array in meinem Fall.
Beispiel Objekt:
{
"states": ["New York", "New Jersey", "California"]
}
Es scheint, dass die vorgeschlagene Lösung (die Feldzuordnung als not_analyzed) nicht für Arrays funktioniert.
Mein Mapping:
{
"properties": {
"states": {
"type":"object",
"fields": {
"raw": {
"type":"object",
"index":"not_analyzed"
}
}
}
}
}
Ich habe versucht, "Objekt" zu ersetzen durch "string", aber das funktioniert nicht.
Ihnen so sehr für Ihre Antwort danken, du hast recht, meine Frage ist in der Tat fehlt das '.raw'. Das liegt daran, dass ich so viele verschiedene Kombinationen von Mappings und Suchanfragen ausprobiert habe und diese hochgeladen habe. Ihre Antwort führte mich zu erkennen, dass mein echtes Problem ist, dass ich das elasticsearch-transport-couchbase-Plugin verwende, um meine Dokumente in Elasticsearch zu importieren, und das Plugin ändert meine Dokumentstruktur mit einem Attribut "doc". Dank Ihrer Antwort habe ich ein Dokument manuell hinzugefügt, und es hat funktioniert, und so habe ich das umgebende Attribut "doc" in den anderen Dokumenten entdeckt. – Marieke