gpt4 book ai didi

elasticsearch - 如何在 Elasticsearch 中查询不区分大小写的字符串

转载 作者:行者123 更新时间:2023-12-02 23:51:50 26 4
gpt4 key购买 nike

我在两个字段中寻找数据,其中一个字段必须相同,一个使用查询

我有数据

{
"NUMBER" : "5587120",
"SID" : "121213-13131-_X",
"ADDRESS" : "purwakarta"
}

我试过使用这样的查询字符串
GET test/_doc/_search
{
"query" : {
"bool" : {
"must" : [
{"match" : {"NUMBER" : "5587120"}}
],
"filter" : {
"query_string" : {
"default_field" : "SID.keyword",
"query" : "*X*"
}
}
}

}

当我输入与录制的文本相同的文本时,会出现我想要的数据,但是当我以小写形式写入文本时,数据不会出现

最佳答案

由于您的问题尚不清楚,根据上下文,我假设在哪个字段上进行不区分大小写的搜索,我假设其为SID.keyword字段。

为什么您的解决方案不起作用:请注意,按原样在 flex 搜索中不对keyword字段进行分析和索引,因此对于字段SID.keyword而言,会提供其值121213-13131-_X,因此它将按原样存储仅创建一个与提供的值完全相同的 token 。

现在您正在使用query_string现场SID.keyword,因此您的query string将使用为该字段配置的同一分析器,即keyword analyzer,它又是无操作分析器,因此不会小写查询中提供的*X*

解决方案:如果要搜索insensitive而不是使用SID.keyword字段,只需创建一个使用keyword分析器的自定义分析器,然后将其传递给lowercase token 过滤器,这样您的121213-13131-_X将转换为121213-13131-_x(注意小写x )。然后,您的查询字符串也将使用相同的分析器,并且将匹配文档,因为elasticsearch最终将对匹配的 token 进行工作。

关于elasticsearch - 如何在 Elasticsearch 中查询不区分大小写的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049937/

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