我有一个具有以下Map的索引(忽略其他字段)。“user_data”字段是一个嵌套的对象数组。现在,我想通过使用“name”字符串作为文本查询来查询ES结果。我的搜索目的是如果搜索结果的“user_data”数组包含具有相同“name”字符串的项目,则应首先显示这些结果。并且这些搜索结果的顺序应该按照相同“名称”项的“计数”降序排列。有人知道如何编写ES查询条件吗?提前感谢。
Map片段:
{
"index_1": {
"mappings": {
"properties": {
"user_data": {
"type": "nested",
"properties": {
"counts": {
"type": "integer"
},
"name": {
"type": "text"
}
}
}
}
}
}
}
某单据“user_data”数组中的数据示例:
"user_data": [{
"counts": "5",
"name": "abcd"
},
{
"counts": "1",
"name": "test 001"
}
]
例如,如果我使用字符串“abcd”查询ES结果,“abcd”有3个结果,两个单据有“name”=“abcd”的项,那么这两个单据应该首先显示,然后如果一个单据的“abcd”项的计数=5,另一个单据的“abcd”项的计数=8,那么后一个应该作为第一个结果显示。并且前一个结果应当被显示为第二结果。
有谁知道如何为这个需求编写查询条件吗?提前感谢。
1条答案
按热度按时间6bc51xsx1#
我做了一个例子,我做了查询排序字段计数。
文件
质询