Elasticsearch java-api spring-数据不应索引空值字段

Elasticsearch java-api spring-data should not index null value fields

我将 elasticsearch java-api 与 spring-data 结合使用,但在索引文档时遇到问题。索引有效,但应跳过某些值。但首先我向您展示我的设置:

域对象:

@Document(indexName = "testindex", type = "message")
public class MessageObject {

@Id
private String  unid;

private String message;

private String secondMessage;

private String thirdMessage;

...

getters & setters

...

}

接口:

public interface MessageObjectRepository extends ElasticsearchRepository<MessageObject, Long> {


}

服务:

@Component
public class MessageService {

    @Autowired
    private MessageObjectRepository repository;


    public void addRegistrationObject(MessageObject msg) {

        repository.save(msg);
    }
}

所以....

如果我想索引一条只有两条消息集的消息。例如"message" 和 "thirdMessage" 我要离开 "secondMessage" null...

如果我检查我的索引,结果如下:

"hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
      {
        "_index": "testindex",
        "_type": "message",
        "_id": "00113B325ED357B7C1257E2D001D5B4B",
        "_score": 1,
        "_source": {
          "unid": "00113B325ED357B7C1257E2D001D5B4B",
          "message": "Hello",
          "secondMessage": null,
          "thirdMessage": "Third",
....

我的问题是,我不想在我的索引中有一个 null 值字段。 我找不到任何有用的东西...

是否可以在字段具有空值时直接忽略它? (不要把它放在索引中)所以我的索引文档看起来像这样:

  "unid": "00113B325ED357B7C1257E2D001D5B4B",
  "message": "Hello",
  "thirdMessage": "Third",

没有

 "secondMessage": null,

?

我不想要忽略空值字段的查询。我想要一个没有空值字段的索引。

您应该能够在 class 级别

指定以下 @JsonInclude 注释
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@Document(indexName = "testindex", type = "message")
public class MessageObject {
   ...
}