我有字段值作为列表。例如
_id = 1
tags = ["IT", "mobile", "OS"]
_id = 2
tags = ["Mac", "fast", "laptop"]
_id = 3
tags = ["IT", "android", "OS"]
我有一个列表来检查标记字段。
sample = ["OS", "opera", "mobile"]
因此,当我使用示例集查询代码时,id 1
和id 3
的文档应匹配。(原因id 1
包含"OS"
和"mobile"
以及{{ 1}} conatins id 3
。)
如何在弹性搜索中执行此操作?
答案 0 :(得分:1)
试试这个
GET /_search
{
"query": {
"bool": {
"should": [
{
"terms":
{
"tags": ["OS", "opera","mobile"]
}
}
]
}
}
}
答案 1 :(得分:0)
使用" should"尝试以下布尔查询keyword
GET /_search
{
"query": {
"bool": {
"should": [
{ "match": { "tags": "OS" }},
{ "match": { "tags": "opera" }},
{ "match": { "tags": "mobile" }}
]
}
}
}
对于进一步的查询可能是一个重要的注释:如果您打算搜索包含所有3个值(而不是2个或仅1个标记)的对象,那么您首先应该在Elasticsearch中阅读nested objects。