Java 将@Id字段上的FieldType.keyword与spring数据elasticsearch一起使用时出现IllegalArgumentException
我有一个使用Spring elastic search注释的简单ES文档:Java 将@Id字段上的FieldType.keyword与spring数据elasticsearch一起使用时出现IllegalArgumentException,java,
spring-data-elasticsearch,Java,
spring Data Elasticsearch,我有一个使用Spring elastic search注释的简单ES文档: @Document(indexName = "indexName", type = "metadata") public class EsMetadata { @Id @NonNull @Field(type = FieldType.keyword) String metadataId; @NonNull @Field(type = FieldType.keyword)
@Document(indexName = "indexName", type = "metadata")
public class EsMetadata {
@Id
@NonNull
@Field(type = FieldType.keyword)
String metadataId;
@NonNull
@Field(type = FieldType.keyword)
String assetId;
}
这两个字符串通常由UUID字符串表示,其中包括连字符。在尝试搜索特定UUID时,我遇到以下问题:
解决方案(或解决方法)是将FieldType设置为关键字
在assetId
字段上工作,而不是在metadataId
字段上工作-显然是因为它标记为@Id
当我调用this.esTemplate.putMapping(EsMetadata.class)
时,我得到一些IllegalArgumentException:
Caused by: java.lang.IllegalArgumentException: Could not convert [metadataId.index] to boolean
Caused by: java.lang.IllegalArgumentException: Failed to parse value [not_analyzed] as only [true] or [false] are allowed.
我使用9515882b-f583-4675-bc19-44c9247c0365
和bc205f3e-35c2-f583-835c-344a9f89d758
作为样本UUID,其中部件等同于正确测试所需行为
当我从metadataId
中删除@字段(type=FieldType.keyword)
注释时,一切正常-除了在搜索特定的metadataId
uuid时得到重复项。对于assetId
uuid,没有重复项-如预期的那样
如何在@Id
注释字段上使用关键字
字段类型,以便查找特定的UUID?还是我遇到了虫子
我使用弹簧数据elasticsearch 3.1.0.M1和elasticsearch 6.2.2