gpt4 book ai didi

elasticsearch - 仅在Elasticsearch区分大小写时获得结果

转载 作者:行者123 更新时间:2023-12-02 23:08:30 25 4
gpt4 key购买 nike

目前,我在ES中的多匹配搜索存在问题。
就像这样简单:如果我正在搜索“萨克森”市,那么我会得到结果。
如果搜索“sachsen”(小写),则没有结果。
如何避免呢?
QUERY,无结果

{
"match" : {
"City" : {
"query" : "sachsen"
}
}
我的分析器是analyzer_keyword。我应该添加些什么吗?
映射
City: {
type: "string",
analyzer: "analyzer_keyword"
}

最佳答案

您的analyzer_keyword分析器很可能是keyword类型,这意味着您只能对其执行精确匹配。

标准做法是应用多个"variants" of a field,其中一个将匹配小写字母(可能是带ascii token 的字符)(请考虑München-> munchen),而一个将不会以任何方式被标记(这就是analyzer_keyword中的内容)。
由于您打算搜索Sachsen的小写版本,因此您的映射可能类似于

PUT sachsen
{
"mappings": {
"properties": {
"City": {
"type": "keyword", <----

"fields": {
"standard": {
"type": "text",
"analyzer": "standard" <----
}
}
}
}
}
}
索引文件后
POST sachsen/_doc
{
"City": "Sachsen"
}
以下将适用于完全匹配:
GET sachsen/_search
{
"query": {
"match": {
"City": "Sachsen"
}
}
}
这是小写的
GET sachsen/_search
{
"query": {
"match": {
"City.standard": "sachsen"
}
}
}
请注意,我在这里使用默认的 standard 分析器,但是您可以选择任何您认为合适的分析器。

关于elasticsearch - 仅在Elasticsearch区分大小写时获得结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558571/

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