aka*_*kai 5 elasticsearch elasticsearch-5
在Elasticsearch中,有没有办法检查结果排序的字段?我想要类似于内部命中的排序条款.
想象一下,您的文档有这种形式:
{"numerals" : [ // nested
{"key": "point", "value": 30},
{"key": "points", "value": 200},
{"key": "score", "value": 20},
{"key": "scores", "value": 40}
]
}
Run Code Online (Sandbox Code Playgroud)
并按以下方式对结果进行排序:
{"numerals.value": {
"nested_path": "numerals",
"nested_filter": {
"match": {
"numerals.key": "score"}}}}
Run Code Online (Sandbox Code Playgroud)
现在我不知道如何知道结果实际排序的字段:它可能scores在本文档中,但可能score在其他文档中?有两个问题 - 1.您不能使用内部命中或突出显示嵌套字段. - 2.即使你可以,如果有多个匹配的候选人,它也无法解决问题.
问题是关于按嵌套对象内的字段进行排序。
这就是文档 https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html 和 https://www.elastic.co/guide/en/elasticsearch/reference/的内容current/search-request-sort.html#_nested_sorting_example 说:
Elasticsearch 将首先通过“nested_filter”查询来限制嵌套文档,然后以与多值字段相同的方式进行排序:正是这样,就好像只有过滤后的嵌套文档作为内部对象,又好像有仅具有多值字段的根文档,该字段包含属于已过滤嵌套对象的所有值
(在您的示例中,仅保留一个值:20)。如果您想确定排序顺序,请插入“mode”参数:“min”、“max”、“sum”、“avg”或“median”
如果您没有根据相应问题指定“mode”参数,则将为“asc”选择最小值,为“desc”顺序选择最大值:
默认情况下,对多值字段进行排序时,将根据排序顺序从字段值中选取最低或最高值。
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |