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.htmlhttps://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.