我有如下查询,
任何想法,为什么我在搜索时只获得完全匹配的结果。例如 ;
当我搜索“Aegli”时,我得到了结果,但是当我搜索“Aegl”时没有返回结果
query = {
"query": {
"query_string": {
"query": "%s"%q
}
},
"filter": {
"term": {
"has_product": 1
}
},
"facets": {
"destination": {
"terms": {
"field": "destination.en"
},
"facet_filter": {
"term": {
"has_product": 1
}
}
},
"hotel_class": {
"terms": {
"field": "hotel_class"
},
"facet_filter": {
"term": {
"has_product": 1
}
}
},
"hotel_type": {
"terms": {
"field": "hotel_type"
},
"facet_filter": {
"term": {
"has_product": 1
}
}
}
}
}
答案 0 :(得分:0)
我没有看到您的真实查询,但您可能在搜索字的末尾遗漏了*
,而您的查询字符串应该是这样;
{"query_string": {"query": "%s*"}
例如;
{"query_string": {"query": "Aegl*"}
答案 1 :(得分:0)
有如下的映射
{
"mappings": {
"hotel": {
'properties': {"name": {
"type": "string",
"search_analyzer": "str_search_analyzer",
"index_analyzer": "str_index_analyzer"
}
}},
},
"settings": {
"analysis": {
"analyzer": {
"str_search_analyzer": {
"tokenizer": "keyword",
"filter": ["lowercase"]
},
"str_index_analyzer": {
"tokenizer": "keyword",
"filter": ["lowercase", "substring"]
}
},
"filter": {
"substring": {
"type": "nGram",
"min_gram": 1,
"max_gram": 20
}
}
}
}
}
解决了我的问题