首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不区分大小写查询

问不区分大小写查询
EN

Stack Overflow用户
提问于 2017-04-10 16:52:00
回答 2查看 7K关注 0票数 1

我正在使用ElasticSearch,我有这样的字段:

代码语言:javascript
复制
"name": {
      "type": "string",
      "index": "not_analyzed"
},

例如,我运行此查询以获取所有名为“Charles”的员工:

代码语言:javascript
复制
GET company_employee/employee/_search
{
   "query": {
      "bool": {
         "must": [
            {
                "match_phrase": {
                   "name": "Charles"
                }
            }
         ]
      }
   }
}

问题是,我需要得到一个不敏感的搜索。我需要检索所有的" ChaRleS ",即使我提供给查询的值es CHarles或charles,等等。我需要做什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-10 18:33:45

如果重新索引不是一个选项,这就会更改查询。

尽管雷杰普方法不允许搜索不区分大小写,但您可以“手动”进行搜索。

如果字符始终是第一个字母,您可以通过以下操作来完成:

代码语言:javascript
复制
GET company_employee/employee/_search
{
   "query": {
         "regexp": { "name": "[Cc]harles" }
    }
}

否则对“真”大小写不敏感:

代码语言:javascript
复制
GET company_employee/employee/_search
{
   "query": {
         "regexp": { "name": "[Cc][Hh][Aa][Rr][Ll][Ee][Ss]" }
    }
}

这绝不是有效的,但与不更改索引的约束相匹配。

票数 0
EN

Stack Overflow用户

发布于 2017-04-10 16:58:53

基本上,您需要对name字段进行分析,例如:

代码语言:javascript
复制
"name": {
  "type": "text",
  "analyzer": "standard"
}

有了这样的映射,您的所有值都将被小写,因此搜索将不区分大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43328837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档