我一直在阅读文档,并一直试图通过多个字段和列来实现过滤结果的解决方案,但是我一直在收到错误; 格式错误的查询。
我想用完全相等的值过滤结果,例如:
is_active: true
category_id: [1,2,3,4]
brand: "addidas"
gender: "male"
为了让我更清楚我打算做什么,如果它用SQL编写,我就是这样运行的:
SELECT .... WHERE
is_active= 1 AND category_id IN(1,2,3,4)
AND brand='addidas' AND gender='male'
我在DSL中的查询如下:
{
"body": {
"query": {
"nested": {
"query": {
"bool": {
"must": {
"terms": {
"category_id": [
1,
2,
3
]
},
"term": {
"is_active": true
},
"term": {
"brand": "addidas"
}
}
}
}
}
}
}
}
如何按照弹性搜索中的描述过滤多个文件和值?
如果您需要我提供回答问题所需的额外信息,请发表评论。如果您添加了文档链接,请同时提供示例(包含查询dsl)的说明我当前或类似的情况应该得到解决。
答案 0 :(得分:2)
使用以下代码:
"query": {
"bool": {
"must" : [
{"term" : { "is_active" : true}},
{"term" : { "gender" : "female"}},
{"term" : { "brand" : "addidas"}},
{"terms": { "categoryId": [1,2,3,4]}}
]
}
}