【发布时间】:2021-05-20 13:00:16
【问题描述】:
我需要按一些字段对我的文档进行排序,一种排序 - 一个字段。但每次我都弄错了排序。在文档中,我有 uid 和标题。文档中的 Uid 看起来像“AAA-100”,标题可能只是带有空格的文本。当我试图按这些字段排序时,我得到了错误的顺序。例如,当我尝试按 ASC 顺序按标题排序时,我得到了这个:
aaa b c
aaa c
aaa b d
aaa b h
bbb f b
test
当order为DESC时
test
aaa b h
bbb f b
aaa b d
aaa b c
aaa c
对于 uid ASC 顺序看起来不错,但 DESC 看起来像
AAA-461
AAA-460
AAA-449
AAA-450
AAA-454
这是我的文档的实体类中的字段:
@MultiField(mainField = @Field(type = FieldType.String, analyzer = INDEX_ANALYZER, searchAnalyzer = SEARCH_ANALYZER), otherFields =
@InnerField(suffix = "raw", type = FieldType.String, index = not_analyzed))
private String uid;
@MultiField(mainField = @Field(type = FieldType.String, analyzer = INDEX_ANALYZER, searchAnalyzer = SEARCH_ANALYZER), otherFields =
@InnerField(suffix = "raw", type = FieldType.String, index = not_analyzed))
private String title;
其中 INDEX_ANALYZER 和 SEARCH_ANALYZER:
"custom_search_analyzer": {
"filter": [
"lowercase",
"asciifolding"
],
"tokenizer": "keyword"
},
"custom_index_analyzer": {
"filter": [
"lowercase",
"asciifolding",
"custom_nGram"
],
"tokenizer": "keyword"
}
怎么了?为什么排序不能正常工作?
【问题讨论】:
标签: java elasticsearch spring-data