问题描述
我想执行精确单词匹配和部分单词/子字符串匹配。例如,如果我搜索“测试产品”,那么我应该能够在结果中找到“测试”和“产品”相关的文本。我正在使用下面的匹配查询搜索弹性搜索,它没有给我精确的匹配,而是给出了一些更不重要的匹配。例如,它在结果中给出了“示例”相关文本。
我正在使用弹性搜索 6.3
请在下面找到我的查询
GET /_search { "must":{ "query_string":{ "query":"title:测试产品" } } }
搜索结果: “命中”:[ { "_index": "67107104","_type": "_doc","_id": "1",“_score”:0.6931471, “_来源”: { "title": "测试" } },{ "_index": "67107104","_id": "2",“_score”:0.6931471, “_来源”: { "title": "产品不错" } },"_id": "3",“_score”:0.6931471, “_来源”: { “标题”:“样品” } } ]
预期搜索结果:
“命中”:[ { "_index": "67107104",“_score”:0.6931471, “_来源”: { "title": "产品不错" } } ]
解决方法
在上面的搜索查询中,您在 review
字段中进行搜索,而在搜索结果中您正在获取 title
字段的数据
添加一个包含索引数据、搜索查询和搜索结果的工作示例
索引数据:
{
"review": "testing"
}
{
"review": "product good"
}
{
"review": "sample"
}
搜索查询:
{
"query": {
"match": {
"review": "test product"
}
}
}
搜索结果:
"hits": [
{
"_index": "67119314","_type": "_doc","_id": "2","_score": 0.2876821,"_source": {
"review": "product good"
}
}
]