elasticsearch - 有没有办法在不更改现有文档的情况下使Elasticsearch不区分大小写?

标签 elasticsearch elasticsearch-5

Elasticsearch是否允许我们查询不区分大小写的文档?还是应该在查询之前将它们另存为不区分大小写?还是我应该为整个索引设置一些设置以使其不区分大小写?

你能澄清一下这一刻吗?

最佳答案

默认情况下,由于应用了映射弹性,因此字段不区分大小写。

请尝试以下方法:

PUT myindex/doc/1
{
  "name":"TEST"
}

GET myindex/_mapping

它应该返回:
{
  "myindex": {
    "mappings": {
      "doc": {
        "properties": {
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }          
        }
      }
    }
  }
}

现在,如果您使用下面的查询,它将返回一个匹配项(注意映射[文本和关键字]):
POST myindex/_search
{
  "query": {
    "match": {
      "name2": "test"
    }
  }
}

现在,如果您明确指定将字段索引为keyword,那么它将区分大小写。尝试下面看看;它不会返回任何结果。
PUT myindex/_mapping/doc
{
  "properties": {
    "name2": {
      "type": "keyword"
    }
  }
}

PUT myindex/doc/1
{
  "name2":"TEST"
}


POST myindex/_search
{
  "query": {
    "match": {
      "name2": "test"
    }
  }
}

TLDR;使用默认映射或text类型-如果您指定的字段仅索引keyword类型,则区分大小写。

关于elasticsearch - 有没有办法在不更改现有文档的情况下使Elasticsearch不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069213/

相关文章:

elasticsearch - 如何使用Logstash解析日志

elasticsearch - 无法安装 Elasticsearch 插件

php - 如何为Elasticsearch索引标准化的SQL数据库

elasticsearch - 如何在C#中传递方法数组

elasticsearch - Elasticsearch-在path_route上找不到嵌套类型

elasticsearch - 如何完成建议Elasticsearch 5.x

elasticsearch - bool 查询中的不同评分函数

elasticsearch - Elasticsearch 5.4传输客户端无法远程访问

elasticsearch - 过滤查询在 Elasticsearch 中不起作用

elasticsearch - Elasticsearch :一旦获得所需结果,如何终止多重搜索查询