我有一个字段my_field
,其定义如下:
"properties" : {
...
"my_field" : { "type" : "string", "store" : "no", "index" : "not_analyzed" },
...
}
可以使用通配符找到存储在该字段中的所有小写字符串:
即。 kindergarten
可以找到my_field:kinder*
但是使用通配符找不到所有大写字符串:
即。 KINDERGARTEN
和myfield:KINDER*
my_field:kinder*
这是预期的行为还是我做错了什么?
答案 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查看该字段中实际存储的令牌。