То, что я пытаюсь сделать, это запрос к упругому поиску (версия 6.4), чтобы получить уникальный результат поиска (названный eids). Я сделал запрос, как показано ниже. Я хотел бы сначала выполнить текстовый поиск по обоим полям, которые называются eLabel и pLabel, и получить отчетливый результат, который называется eid. Но на самом деле результат не агрегируется, показывая избыточные идентификаторы от 0 до более 20. Как я могу настроить запрос?
{
"query": {
"multi_match": {
"query": "Brazil Capital",
"fields": [
"eLabel",
"pLabel"
]
}
},
"size": 200,
"_source": [
"eid",
"eLabel"
],
"aggs": {
"eids": {
"terms": {
"field": "eid"
}
}
}
}
мои текущие сопоставления следующие.
- Ид: идентификатор сущности
- eLabel: ярлык объекта (например, Бразилия)
- prop_id: идентификатор свойства объекта (eid)
- pLabel: метка собственности (например, столица, расположена в ...)
"mappings": {
"entity": {
"properties": {
"eLabel": {
"type": "text" ,
"index_options": "docs" ,
"analyzer": "my_analyzer"
} ,
"eid": {
"type": "keyword"
} ,
"subclass": {
"type": "boolean"
} ,
"pLabel": {
"type": "text" ,
"index_options": "docs" ,
"analyzer": "my_analyzer"
} ,
"prop_id": {
"type": "keyword"
} ,
"pType": {
"type": "keyword"
} ,
"way": {
"type": "keyword"
} ,
"chain": {
"type": "integer"
} ,
"siteKey": {
"type": "keyword"
},
"version": {
"type": "integer"
},
"docId": {
"type": "integer"
}
}
}
}