Ich habe folgende Suche/Städte Index, wo Element wird Name und Bündel anderer Eigenschaften haben. Ich fahre folgendes Aggregat Suche:Elasticsearch gibt doppeltes Ergebnis
{
"size": 0,
"query": {
"multi_match" : {
"query": "ana",
"fields": [ "cityName" ],
"type" : "phrase_prefix"
}
},
"aggs": {
"res": {
"terms": {
"field": "cityName"
},
"aggs":{
"dedup_docs":{
"top_hits":{
"size":1
}
}
}
}
}
}
Als Ergebnis bekomme ich 3 Eimer mit den Tasten "Anahiem", "ana" und "santa". Unten ist Ergebnis:
"buckets": [
{
"key": "anaheim",
"doc_count": 11,
"dedup_docs": {
"hits": {
"total": 11,
"max_score": 5.8941016,
"hits": [
{
"_index": "search",
"_type": "City",
"_id": "310",
"_score": 5.8941016,
"_source": {
"id": 310,
"country": "USA",
"stateCode": "CA",
"stateName": "California",
"cityName": "Anaheim",
"postalCode": "92806",
"latitude": 33.822738,
"longitude": -117.881633
}
}
]
}
}
},
{
"key": "ana",
"doc_count": 4,
"dedup_docs": {
"hits": {
"total": 4,
"max_score": 2.933612,
"hits": [
{
"_index": "search",
"_type": "City",
"_id": "154",
"_score": 2.933612,
"_source": {
"id": 154,
"country": "USA",
"stateCode": "CA",
"stateName": "California",
"cityName": "Santa Ana",
"postalCode": "92706",
"latitude": 33.767371,
"longitude": -117.868255
}
}
]
}
}
},
{
"key": "santa",
"doc_count": 4,
"dedup_docs": {
"hits": {
"total": 4,
"max_score": 2.933612,
"hits": [
{
"_index": "search",
"_type": "City",
"_id": "154",
"_score": 2.933612,
"_source": {
"id": 154,
"country": "USA",
"stateCode": "CA",
"stateName": "California",
"cityName": "Santa Ana",
"postalCode": "92706",
"latitude": 33.767371,
"longitude": -117.868255
}
}
]
}
}
}
]
Frage ist, warum letzte Eimer Schlüssel „santa“ haben sogar tho ich für „ana“ zu suchen und warum gleiche Stadt „Santa Ana“ (mit id = 154) zeigt in 2 verschiedenen Eimern nach oben (Schlüssel "ana" und Schlüssel "santa")?
Val ich eigentlich wollen für cityName analysiert werden, so "Sant Ana" würde zurückgegeben werden, wenn ich mit "San" oder "Ana ". Gibt es eine Möglichkeit, doppelte Einträge zu vermeiden? Im Grunde ist der einzige Grund, den ich aggregiere, Duplikate loszuwerden. –
Ja, ich habe meine Antwort aktualisiert. – Val
Aber würde es nicht bedeuten, dass, wenn ich nach "ana" suche, nicht "Santa ana" nicht zurückgegeben wird, da die Suche nach pefix für die ganze Zeichenfolge vorgeht? –