任何人都可以告诉我如何在elasticsearch-js中进行严格匹配。这是我的搜索
client.search({{
index: 'hash_tag',
type: 'hash_tag',
lenient:false,
body: {
query: {
match: {
tag_name: 'hash tag 1'
}
}
}
}).then(function (body) {
console.log("body", JSON.stringify(body));
}, function (error) {
console.trace(error.message);
})
此查询搜索哈希,标记,1 我正在查找完整的字符串匹配。这是我的示例索引样式。
{
"_index": "hash_tag",
"_type": "hash_tag",
"_id": "3483",
"_score": 0.019691018,
"_source": {
"id": "3483",
"labels": [
"hash_tag"
],
"tag_name": "hash tag 2"
}
}
答案 0 :(得分:0)
默认情况下,elasticsearch会“标记”你的文本字段,将它们添加到倒排索引中,这就是你得到每个术语的结果的原因。
为了获得完全匹配,您可以采用不同的方法,最简单的方法是使用match_frase:
GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}
另一种选择是添加具有not_analyzed映射的特定字段,然后文本将不会被标记化。