Elasticsearch:如何知道结果按哪个字段排序?
Elasticsearch: how to know which field the results are sorted by?
在Elasticsearch中,有什么方法可以检查结果是按哪个字段排序的?我想要类似 inner-hits for sort 子句的东西。
假设您的文档具有这种形式:
{"numerals" : [ // nested
{"key": "point", "value": 30},
{"key": "points", "value": 200},
{"key": "score", "value": 20},
{"key": "scores", "value": 40}
]
}
然后您按以下方式对结果进行排序:
{"numerals.value": {
"nested_path": "numerals",
"nested_filter": {
"match": {
"numerals.key": "score"}}}}
现在我不知道如何知道结果实际排序的字段:在本文档中可能是 scores
,但在其他文档中可能是 score
?有 2 个问题 - 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"-query 限制嵌套文档,然后按照与多值字段相同的方式排序:
就像只有过滤后的嵌套文档作为内部对象一样,又好像只有根文档具有多值字段,该字段恰好包含属于过滤嵌套对象的所有值
(在您的示例中,将只保留一个值:20)。
如果您想确定排序顺序,请插入一个 "mode" 参数:
"min"、"max"、"sum"、"avg" 或 "median"
如果您没有根据 corresponding issue 指定 "mode" 参数,则将为 "asc" 选择最小值,为 [=32 选择最大值=]-订单:
By default when sorting on a multi-valued field the lowest or highest
value will be picked from the field values depending on the sort
order.
在Elasticsearch中,有什么方法可以检查结果是按哪个字段排序的?我想要类似 inner-hits for sort 子句的东西。
假设您的文档具有这种形式:
{"numerals" : [ // nested
{"key": "point", "value": 30},
{"key": "points", "value": 200},
{"key": "score", "value": 20},
{"key": "scores", "value": 40}
]
}
然后您按以下方式对结果进行排序:
{"numerals.value": {
"nested_path": "numerals",
"nested_filter": {
"match": {
"numerals.key": "score"}}}}
现在我不知道如何知道结果实际排序的字段:在本文档中可能是 scores
,但在其他文档中可能是 score
?有 2 个问题 - 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"-query 限制嵌套文档,然后按照与多值字段相同的方式排序:
就像只有过滤后的嵌套文档作为内部对象一样,又好像只有根文档具有多值字段,该字段恰好包含属于过滤嵌套对象的所有值
(在您的示例中,将只保留一个值:20)。
如果您想确定排序顺序,请插入一个 "mode" 参数:
"min"、"max"、"sum"、"avg" 或 "median"
如果您没有根据 corresponding issue 指定 "mode" 参数,则将为 "asc" 选择最小值,为 [=32 选择最大值=]-订单:
By default when sorting on a multi-valued field the lowest or highest value will be picked from the field values depending on the sort order.