使用通配符查找大写字符串

时间:2014-09-11 12:07:17

标签: elasticsearch

我有一个字段my_field,其定义如下:

"properties" : {
    ...
    "my_field" : { "type" : "string", "store" : "no", "index" : "not_analyzed" },
    ...
}

可以使用通配符找到存储在该字段中的所有小写字符串:

即。 kindergarten可以找到my_field:kinder*

但是使用通配符找不到所有大写字符串:

即。 KINDERGARTENmyfield:KINDER*

都找不到my_field:kinder*

这是预期的行为还是我做错了什么?

2 个答案:

答案 0 :(得分:1)

您必须将lowercase_expanded_terms设置为false才能使用通配符进行区分大小写的搜索。像这样:http://localhost:9200/test/_search?lowercase_expanded_terms=false&q=my_field:KINDER *

答案 1 :(得分:0)

我做了快速测试,一切看起来都对我不对。

我会尝试使用/_analyze API对该字段进行分析,以确定这些值确实不是小写的。

curl -XPOST 'http://localhost:9200/test/_analyze?field=my_field' -d {
    "test": "This Should Be Single Token"
}

或者尝试Index Termlist Plugin查看该字段中实际存储的令牌。