如果一列的所有字段都为空,则 OpenSearch 不包括该字段,因此对该字段的排序失败

If all fields for a column are null, OpenSearch does not include that field, and so sorting on that field fails

在OpenSearch 中为数据添加排序配置时,我遇到了一种情况,即我要排序的数据字段只有空值。 OpenSearch return 一个错误 [query_shard_exception] Reason: No mapping found for [MY_NULL_FIELD] in order to sort on。话虽这么说,如果我添加一个值,那么排序将按预期运行。有解决办法吗?

您可以在配置索引映射时定义null_valueproperties

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "status_code": {
        "type":       "keyword",
        "null_value": "NULL" 
      }
    }
  }
}

配置空值时请考虑以下内容。

The null_value needs to be the same data type as the field. For instance, a long field cannot have a string null_value.

如果字段值在所有文档中都是null,则该字段可能不存在于映射中。在排序查询中使用 unmapped_type 应该有效。

{
  "sort": [
    {
      "some_missing_field": {
        "order": "asc",
        "unmapped_type" : "long"
      }
    }
  ]
}