【发布时间】:2019-06-24 15:40:14
【问题描述】:
我的索引实体中有一个可为空的列,我想过滤掉相应字段中具有null 的实体。我使用 Elasticsearch 作为索引管理器。
@Field(analyze = Analyze.NO, indexNullAs = "2999-12-31")
@Column(name = "nullable_date")
private LocalDate nullableDate;
我在Field 注释中使用了indexNullAs 属性,如果我正确理解文档,null 值应替换为索引中的"2999-12-31" 值。
但是在 Elasticsearch 中,这个字段有一个实际的 null 值,而不是我在注释中指定的 "2999-12-31" 字符串:
"nullableDate": null,
此字段位于根索引实体中(不是 IndexedEmbedded 实体,因此不是这个问题https://hibernate.atlassian.net/browse/HSEARCH-2389)。
我尝试了类似+nullableDate:null 的查询并将其发送到createFullTextQuery 方法,但我从Elasticsearch 收到failed to parse date field [null] with format [strict_date||yyyyyyyyy-MM-dd] 错误。我也尝试过像 +nullableDate:2999-12-31 这样的查询,显然我得到了空结果(因为字段在 Elastic 中有 null 值)。
这是否意味着indexNullAs 无法正常工作(是https://hibernate.atlassian.net/browse/HSEARCH-3099 问题吗?)还是我以错误的方式使用它?
谢谢。
【问题讨论】:
标签: hibernate elasticsearch lucene hibernate-search