我有三个字段status,type并且search。status我想要的是搜索包含等于NEW或status等于IN PROGRESS、type等于abc或type等于xyz且search包含(部分匹配)的数据。
我的电话如下所示 -
{
"query": {
"bool" : {
"must" : [{
"match": {
"status": {
"query": "abc",
}
}
}, {
"match": {
"type": {
"query": "NEW",
}
}
},{
"query_string": {
"query": "*abc*", /* for partial search */
"fields": ["title", "name"]
}
}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套你的布尔查询。我认为你缺少的是:
"bool": { "should": [
{ "match": { "status": "abc" } },
{ "match": { "status": "xyz" } }
]}
Run Code Online (Sandbox Code Playgroud)
这是一个必须匹配 should 子句之一的查询,因为只给出了 should 子句。
编辑解释差异:
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"status": "abc"
}
},
{
"match": {
"status": "xyz"
}
}
]
}
},
{
"terms": {
"type": [
"NEW",
"IN_PROGRESS"
]
}
},
{
"query_string": {
"query": "*abc*",
"fields": [
"title",
"name"
]
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以你在顶部有一个 boolquery。3 个内部查询中的每一个都必须为真。
| 归档时间: |
|
| 查看次数: |
7363 次 |
| 最近记录: |