【问题标题】:adding null_value through spring-data-elasticsearch annotation通过 spring-data-elasticsearch 注解添加 null_value
【发布时间】:2018-04-01 13:48:33
【问题描述】:

我想使用 spring-data-elasticsearch-2.1.0 创建如下用户索引。注解。 我找不到任何注释来添加 "null_value": "NULL"。这是必需的,因为我们的排序顺序失败。

"user": {
    "properties": {
      "firstName": {
        "type": "string"
      },
      "lastName": {
        "type": "string"
      },
      "displayName": {
        "type": "string",
        "analyzer": "word_analyzer",
        "fields": {
          "raw": {
            "type": "string",
            "index": "not_analyzed",
            "null_value": "NULL"
          }
        }
      }
    }
  }

领域类

 private String firstName;
 private String lastName;
 @MultiField(
         mainField = @Field(type = FieldType.String, analyzer = "word_analyzer"),
         otherFields = {
               @InnerField(suffix = "raw", type = FieldType.String, index = FieldIndex.not_analyzed)
                }
)
private String displayName;

如何在InnerField中通过spring-data-elasticsearch注解添加"null_value": "NULL"?我不想在外部创建索引映射。

【问题讨论】:

    标签: elasticsearch spring-boot spring-data spring-data-elasticsearch


    【解决方案1】:

    目前只能通过@Mapping 注解实现。创建带有映射定义的 JSON 文件:

    {
      "type": "string",
      "index": "analyzed",
      "analyzer": "word_analyzer",
      "fields": {
        "raw": {
          "type": "string",
          "index": "not_analyzed",
          "null_value": "NULL"
        }
      }
    }
    

    并将其保存在您的资源文件夹中。在本例中,我将其保存在 resources/elastic/document_display_name_mapping.json

    使用@Mapping 注释对字段进行注释

    @Mapping(mappingPath = "elastic/document_display_name_mapping.json")
    private String displayName;
    

    【讨论】:

      【解决方案2】:

      参考https://jira.spring.io/browse/DATAES-312

      这是一个未解决的问题(已修复但未合并)。 这可以通过在排序选项中添加 "missing" : "_last"/"_first" 和 "unmapped_type" 来处理..

      参考:- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html#_ignoring_unmapped_fields

      这些选项(“missing”、“unmapped_type”、“mode”)不可用。

      将 "null_value": "NULL" 在字符串字段中的排序顺序不正确。

      "null_value": "0" 可以满足整数字段的排序顺序。

      是否可以在设置本身中做一些事情来实现一个用例 用例 -- 如果排序方向为 ASC,则“缺失”:“_first”,如果排序方向为 DESC,则“缺失”:“_last”.. 可应用于原始字段。

      【讨论】:

        猜你喜欢
        • 2016-04-11
        • 2021-07-17
        • 1970-01-01
        • 2015-07-02
        • 2018-08-24
        • 2021-09-20
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        相关资源
        最近更新 更多