一尘不染

如何在Elasticsearch中实现区分大小写的搜索?

elasticsearch

我在索引文档中有一个字段,需要区分大小写地进行搜索。我正在使用匹配查询来获取结果。我的数据文件的一个示例是:

{
"name" : "binoy",
"age" : 26,
"country": "India"
}

现在,当我给出以下查询时:

{
“query” : {
“match” : {
“name” : “Binoy"
}
}
}

它给了我“ binoy”和“
Binoy”的匹配。我希望搜索区分大小写。缺省情况下,elasticsearch似乎不区分大小写。如何在Elasticsearch中使搜索区分大小写?


阅读 1763

收藏
2020-06-22

共1个答案

一尘不染

在映射中,您可以将字段定义为not_analyzed。

curl -X PUT "http://localhost:9200/sample" -d '{
  "index": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}'

echo
curl -X PUT "http://localhost:9200/sample/data/_mapping" -d '{
  "data": {
    "properties": {
      "name": {
        "type": "string",
        "index": "not_analyzed"
      }
    }
  }
}'

现在,如果您可以进行普通索引和普通搜索,它就不会对其进行分析并确保其提供不区分大小写的搜索。

2020-06-22