У меня есть модель данных ElasticSearch, подобная этой:
{
"_index": "index_name",
"_type": "_doc",
"_id": "26177",
"_score": 1.0,
"_source": {
"primary_name": "Megatron Industries",
"some_value": "",
"search_names": [
"Optimus",
"Prime",
"Lorem"
]
}
},
В настоящее время я выполняю запрос, подобный этому:
{
"query": {
"query_string" : {
"query" : "lorem",
"fields" : ["search_names"]
}
}
}
Итак, я запрашиваю документы на основе значения в search_names.
На веб-сайте, если кто-то проводит поиск записи с именем «lorem», я бы вернул эту запись с указанием «основного имени», а затем список их имен_поисков с надписью «также известный как».
Моя проблема в том, что небольшое количество этих записей имеют более 1000 'search_names', поэтому мне придется ограничить количество показанных 'search_names', но я хочу убедиться, что 'search_name' это ближе всего к их запросу показано в верхней части «также известный как».
Чтобы уточнить, я доволен порядком результатов поиска, но я собираюсь отсортировать значение одного из полей в результатах поиска на основе запроса.
Это то, что я могу сделать в ElasticSearch?
В качестве вторичной цели, после того как она отсортирована, я могу каким-либо образом ограничить количество результатов, возвращаемых в поле search_names, до 10, но также предоставить другое поле, которое включает общее количество в виде числа?
Таким образом, я мог бы показать в результатах поиска:
- Основное имя: Megatron Industries
- Также известный как: Optimus, prime, ... и 990 других имен.
Спасибо,