使用通配符省略结果

时间:2016-05-17 14:25:14

标签: elasticsearch

我有以下配置:

映射:

  "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 *”,则会返回。

1 个答案:

答案 0 :(得分:1)

感谢Andrei Stefan的帮助,我能够追踪这个问题。

最后问题是数据2很长,令牌器将它分成2个令牌。一个令牌以&#34; ABCD-1&#34;结束。另一个以&#34; 234567890&#34;

开头