Elasticsearch 索引分词器关键字不起作用

Elasticsearch index tokenizer keyword not working

我有一个包含以下字段的索引:

"Id":{"type":"string","analyzer":"string_lowercase"} // guid for example

在elasticsearch.yml中:

index:
    analysis:
        analyzer:
            string_lowercase:
                tokenizer: keyword
                filter: lowercase

但像这样过滤

{
  "filter": {
    "term": {
      "Id": "2c4294c2-ca84-4f69-b648-8a014ff6e55d"
    }
  }
}

不适用于整个 guid 值,仅适用于部分 ("2c4294c2","ca84",..)

有趣的是,在其他机器上它可以使用相同的配置正常工作。

您无法通过 elasticsearch.yml 添加自定义分析器。有一个用于添加自定义分析器的 REST API。根据您的要求,以下是所需的命令:

PUT <index name>
{
   "settings": {
      "analysis": {
         "analyzer": {
            "string_lowercase": {
               "type": "custom",
               "tokenizer": "keyword",
               "filter": "lowercase"
            }
         }
      }
   }
}