gpt4 book ai didi

java - 在不使用 Fielddata 的情况下对 Elasticsearch 中的文本字段进行排序

转载 作者:行者123 更新时间:2023-12-01 18:41:15 24 4
gpt4 key购买 nike

尝试在 elasticsearch 7+ 中对文本字段进行排序时,它会抛出错误,必须明确将 fielddata 设置为 true。但这会带来额外内存消耗的沉重代价。作为解决方法,我决定使用标准化器将文本字段存储为关键字。下面是标准化器和正在使用的elasticquery。

//field mapping: {
"filterable_text": {
"match": "S_*",
"mapping": {
"copy_to": "_text",
"fields": {
"normalize": {
"type": "keyword",
"normalizer": "my_normalizer"
},
"keyword": {
"type": "keyword"
}
},
"type": "text",
"fielddata": true
}
}
}
//normalizer: "normalizer": {
"my_normalizer": {
"type": "custom",
"char_filter": [],
"filter": ["lowercase", "asciifolding"]
}
}

//query: {
"track_total_hits":false,
"query": {"wildcard": {"doc.S_gName.normalize": "Ami*"}},
"from" : 0,
"size" : 2,
"sort" : [{
"doc.S_gName" : {
"order" : "desc"
}
}]
}

但我仍然遇到同样的错误。有什么建议吗?

最佳答案

如果您的映射正确,并且您使用文本类型和关键字类型对同一字段建立了索引。然后你必须对关键字字段进行排序

如果我有这样的映射

"mappings": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}

那么排序将是

"sort" : [{
"name.keyword" : {
"order" : "desc"
}
}]

就你的情况而言,它会是

"sort" : [{
"doc.S_gName.normalize" : {
"order" : "desc"
}
}]

关于java - 在不使用 Fielddata 的情况下对 Elasticsearch 中的文本字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59929221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com