弹性搜索中的匹配查询区分大小写吗?

Aru*_*han 5 elasticsearch

我从这里跟随了一个例子

索引的映射是

{
  "mappings": {
    "my_type": {
      "properties": {
        "full_text": {
          "type":  "string" 
        },
        "exact_value": {
          "type":  "string",
          "index": "not_analyzed" 
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

索引的文件是

{
  "full_text":   "Quick Foxes!", 
  "exact_value": "Quick Foxes!"  
}
Run Code Online (Sandbox Code Playgroud)

我注意到在"full_text"字段上使用简单的匹配查询,如下所示

{
  "query": {
    "match": {
      "full_text": "quick"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我看到文件是匹配的.此外,如果我使用大写,即"QUICK",作为搜索词,它会显示文档是匹配的.

为什么会这样?默认情况下,标记生成器会将"full_text"字段中的文本拆分为"quick","foxes".那么匹配查询如何匹配文档的上限值?

Cod*_*und 6

因为您没有在索引映射中指定用于"full_text"字段的分析器,所以使用默认分析器.默认为" 标准分析器 ".

引自ElasticSearch文档:

使用带有标准令牌过滤器,小写令牌过滤器和停止令牌过滤器的标准令牌生成器构建标准类型的分析器.

在索引中执行查询之前,ElasticSearch会将为您的字段配置的相同分析器应用于查询值.由于默认分析器在其处理过程中使用小写令牌过滤器,因此使用"快速"或"快速"或"快速"将为您提供相同的查询,因为分析器将通过使用小写令牌过滤器来降低它们的结果,结果只是"快".

  • 那么精确大小写或大写字母的分析器是什么? (2认同)