Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting ElasticSearch 5:按嵌套键和值结果排序;默认情况下,文本字段上的Fielddata被禁用;_Sorting_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Sorting,elasticsearch" /> elasticsearch,Sorting,elasticsearch" />

Sorting ElasticSearch 5:按嵌套键和值结果排序;默认情况下,文本字段上的Fielddata被禁用;

Sorting ElasticSearch 5:按嵌套键和值结果排序;默认情况下,文本字段上的Fielddata被禁用;,sorting,elasticsearch,Sorting,elasticsearch,我正在尝试通过一组嵌套的键值对对ElasticSearch5中的搜索结果进行排序。即: 我得到以下结果(为了保持简单,伪结构): 我想按“Key='abc'”的最高值排序,这意味着“hit2”将排在首位 我的映射如下: { "test_index": { "mappings": { "test_type": { "properties": { "nested_objects": { "type": "nested

我正在尝试通过一组嵌套的键值对对ElasticSearch5中的搜索结果进行排序。即:

我得到以下结果(为了保持简单,伪结构):

我想按“Key='abc'”的最高值排序,这意味着“hit2”将排在首位

我的映射如下:

{
  "test_index": {
    "mappings": {
      "test_type": {
        "properties": {
          "nested_objects": {
            "type": "nested",
            "properties": {
              "Key": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "Value": {
                "type": "float"
              }
            }
          }
        }
      }
    }
  }
}
我试图遵循以下建议:

…但我始终得到以下错误:

"Fielddata is disabled on text fields by default"
复制以下内容的排序尝试示例:

{
  "sort": [
    {
      "nested_objects.Key": {
        "order": "desc",
        "nested_path": "nested_objects",
        "nested_filter": {
          "term": { "nested_objects.Key": "abc" }
        }
      }
    }
  ]
}

解决这个问题的最佳实践方法是什么?启用字段数据(使用大量ram)真的是这里唯一的选项吗?

将分析
文本
数据类型(此类型用于全文搜索)。 对分析的字段进行排序非常昂贵,这就是默认情况下禁用排序的原因。
通常,您不需要按分析字段排序,因此请尝试按关键字字段排序:

"term": { "nested_objects.Key.keyword": "abc" }

阅读文档以更深入地理解问题。

在您的示例中,您是按键排序,但您说要按值排序。默认情况下,键是不可排序的(正如塔拉斯指出的,您必须使用“.keyword”对该字段进行排序),这会抛出您遇到的错误

要完全解决您的问题,请按值排序并按键过滤。您已经按键进行了筛选(不需要使用“.keyword”进行筛选),因此您只需按值排序即可:

{
  "sort": [
    {
      "nested_objects.Value": {   <-- SOLUTION
        "order": "desc",
        "nested_path": "nested_objects",
        "nested_filter": {
          "term": { "nested_objects.Key": "abc" }
        }
      }
    }
  ]
}
{
“排序”:[
{

“nested_objects.Value”:{谢谢Taras-这很有意义,解决了一半的问题(fielddata错误)。我仍然需要按“abc”的值排序-我可以在下面输入更多的术语吗:
“term”:{“nested_objects.Key.keyword”:“abc”}
{
  "sort": [
    {
      "nested_objects.Value": {   <-- SOLUTION
        "order": "desc",
        "nested_path": "nested_objects",
        "nested_filter": {
          "term": { "nested_objects.Key": "abc" }
        }
      }
    }
  ]
}