如何从elasticsearch中具有数组值的字段中获得相等匹配的结果



在我的文档中,我有一个字段,它有一个String数组。就像武器:["Bland Blade" Defender Quelthalas";Thousand Lies";Frozen bones "]

我想要得到所有武器栏有"Frozen Bonespike"字样的文件。不是只有一个词的领域,比如"冰冻"。或";Bonespike"而不是含有"冷冻骨刺"的田地;-比如《冬天的冰封骨骸》

我想获得一个与查询词

完全相等的字符串的字段你知道吗?

要做到这一点,你必须将你的武器字段设置为类型keyword,然后对它进行术语搜索。

默认情况下,elasticsearch将创建文本类型字段(比如武器)和关键字(武器.关键字)

摄取文档

POST test_seo/_doc
{
"weapon": [
"Bland Blade",
"Defender Quelthalas",
"Thousand Lies",
"Frozen Bonespike"
]
}

查询

POST test_seo/_search
{
"query": {
"term": {
"weapon.keyword": {
"value": "Frozen Bonespike"
}
}
}
}

如果你想搜索许多不同的武器,你可以使用terms查询

POST test_seo/_search
{
"query": {
"terms": {
"weapon.keyword": [
"Bland Blade",
"Thousand Lies"
]
}
}
}

最新更新