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"))