我想使用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”?我不想在外部创建索引映射。
答案 0 :(得分: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;
答案 1 :(得分:0)
参考https://jira.spring.io/browse/DATAES-312
这是一个未解决的问题(固定但未合并)。 这可以通过在排序选项中添加“missing”:“_last”/“_ first”和“unmapped_type”来处理。
这些选项(“缺失”,“unmapped_type”,“模式”)不可用。
设置“null_value”:“NULL”在字符串字段中没有正确的排序顺序。
“null_value”:“0”可以满足整数字段的排序顺序。
是否可以在设置本身中执行某些操作来实现一个用例 usecase - 如果排序方向是ASC然后“丢失”:“_ first”,如果排序方向是DESC,那么“missing”:“_last”..可以应用于原始字段。