Решение: Результат агрегации:
После получения вашего сопоставления ниже вы найдете то, что вы искали, где я использовал Scripted Terms Aggregation
:
POST <your_index_name>/_search
{
"size": 0,
"aggs": {
"my_terms": {
"terms": {
"script": {
"inline": """
if(doc['skills.name.keyword'].size()>0){ <---- Note this logic I've added
if(doc['skills.name.keyword'].value.contains("jav")){
return doc['skills.name.keyword'];
}
}
"""
},
"size": 10
}
}
}
}
Обратите внимание, что я использовал contains
метод String
класса для Java. Вы можете изменить logi c в соответствии с тем, что вы ищете, чтобы отфильтровывались только те значения агрегации, которые вам нужны.
Причина, по которой вам может потребоваться отфильтровать отклик агрегации, заключается в том, что в вашем образце документа может быть несколько навыков, как в примере ниже:
{
"skills": [
{
"name": "java"
},
{
"name": "javascript"
},
{
"name": "c++"
}
]
}
Обратите внимание, что ваше решение имеет object
тип данных.
В результате запроса будет возвращен весь документ, затем агрегирующий запрос будет выполнен поверх этих результатов.
Так что, как видите, в приведенном выше документе также есть c++
и что он также будет включен в запрос агрегации. Единственный способ добиться агрегирования на hits
- это использовать скриптовые логи c, о которых я упоминал.
Вопрос автозаполнения:
Второй вопрос - это функция автозаполнения и что вам нужно прочитать немного об этом, так как есть разные способы достичь этого.
Однако я бы посоветовал вам начать с понимания Анализ фазы Elasticsearch, понять, что такое Анализатор и его различные части, составляющие Анализатор, и, наконец, перейти к к чтению о токенайзере Edge n-грамм и Подсказка по завершению .
Потребуется некоторое время, чтобы овладеть asp всеми этими концепциями, но как только вы освоите его, его будет относительно легко реализовать.
Обратите внимание, что подстановочные запросы я бы не рекомендовал. Когда вы поймете и узнаете о токенайзерах Ngram или Edge Ngram, ваш запрос может быть таким же простым, как простой запрос на совпадение для jav
. Но прочитайте о концепциях, упомянутых в ссылках.
Дайте мне знать, если это поможет, и если вам нужны дальнейшие разъяснения.