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"
}
}
}
}
}
我有一个包含以下字段的索引:
"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"
}
}
}
}
}