我有以下配置:
映射:
"payload": {
"type": "string",
"analyzer": "whitespace_analyzer"
},
分析仪:
"analysis": {
"analyzer": {
"whitespace_analyzer": {
"filter": [
"lowercase"
],
"type": "custom",
"tokenizer": "whitespace"
}
}
},
和样本数据(每个都是一个单独的文档):
数据1:
[ABCD-1234567890]
数据2(我对此有问题):
<ns0:ConversationId>ABCD-1234567890</ns0:ConversationId>
数据3:
ConversationNumber="ABCD-1234567890"
查询:
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "payload",
"query": "*ABCD-1234567890*",
"analyze_wildcard": true
}
}
] } }
上面的查询不会返回数据2。这是为什么? 如果我将查询更改为:“查询”:“* 234567890 *”,则会返回。
答案 0 :(得分:1)
感谢Andrei Stefan的帮助,我能够追踪这个问题。
最后问题是数据2很长,令牌器将它分成2个令牌。一个令牌以&#34; ABCD-1&#34;结束。另一个以&#34; 234567890&#34;
开头