ElasticSearch-ngram映射结果未正确返回

时间:2018-08-02 15:28:25

标签: java elasticsearch elastic-stack

Am使用code从弹性搜索中获取文档(例如AB-7000-8002)。我已经使用ngram分析器映射了我的字段。

请在下面找到我的地图详细信息。

PUT products
{
"settings": {
"analysis": {
  "analyzer": {
    "custom_analyzer": {
      "type": "custom",
      "tokenizer": "ngram",
      "char_filter": [
        "html_strip"
      ],
      "filter": [
        "lowercase",
        "asciifolding"
      ]
    }
   }
  }
},
"mappings": {
"doc": {
  "properties": {
    "code": {
      "type": "text",
       "analyzer": "custom_analyzer"
      },
    "id": {
        "type": "long"
      },
      "name":{
      "type": "text"
      },
     "locale":{
     "type":"keyword"
     },
     "value":{
     "type":"keyword"
     }

    }
  }
 }
}

如果正在搜索代码AB-7000-8002,并且期望得到如下所示的结果。

AB-7000-8002-CD
AB-7000-8002-C
AB-7000-8002-EF
AB-7000-8002AF
AB-7000-8002

但是正在获得如下所示的结果。这与我的搜索条件无关。

AB-1800-9600
AB-7000-8003-W
AB-7000-8003
AB-6001-8
AB-7000-8002

请找到我要用来获取的Java api

QueryBuilder qb1 = QueryBuilders.boolQuery()
         .must(QueryBuilders.matchQuery("code", "AB-7000-8002"))
         .filter(QueryBuilders.termQuery("locale", "en_US"))

0 个答案:

没有答案