elasticsearch “弹性搜索”过滤器;字段不存在或字段等于true;
我有一个以下格式的搜索查询:
elasticsearch “弹性搜索”过滤器;字段不存在或字段等于true;,
elasticsearch,
elasticsearch,我有一个以下格式的搜索查询: { "query": { "function_score": { "query": { "bool": { "must": { "simple_query_string": { "query": "*", "fields": [ "field1^10", "fiel
{
"query": {
"function_score": {
"query": {
"bool": {
"must": {
"simple_query_string": {
"query": "*",
"fields": [
"field1^10",
"field2^3"
]
}
},
"filter": [
{
"terms": {
"field3": [
"val1",
"val2"
]
}
},
{
"terms": {
"field4": [
"val4"
]
}
},
{
"term": {
"field5": true
}
}
]
}
},
"functions": [
{
"gauss": {
"field1": {
"scale": "31d"
}
},
"weight": 5
}
],
"score_mode": "sum",
"boost_mode": "multiply"
}
},
"size": 10
}
现在我想修改field5
上的过滤器,以便它过滤将field5设置为true
的值,或者如果它们没有field5
索引的值。我希望在结果中包含这两种类型,并且只排除那些将field5
设置为false的类型
我尝试了必须
与应该
在过滤器
中的各种组合,但未能使查询正常工作。谢谢你的帮助
我使用的是elasticsearch 6.5.1版。鉴于您提供的信息 我希望在结果中同时包含这两种类型,并且只希望排除字段5设置为false的类型。 查询应如下所示:
{
"query": {
"function_score": {
"query": {
"bool": {
"must": {
"simple_query_string": {
"query": "*",
"fields": [
"field1^10",
"field2^3"
]
}
},
"must_not": [
{
"term": {
"field5": {
"value": false
}
}
}
],
"filter": [
{
"terms": {
"field3": [
"val1",
"val2"
]
}
},
{
"terms": {
"field4": [
"val4"
]
}
}
]
}
},
"functions": [
{
"gauss": {
"field1": {
"scale": "31d"
}
},
"weight": 5
}
],
"score_mode": "sum",
"boost_mode": "multiply"
}
},
"size": 10
}
我添加了一个must_not-子句,以排除字段5等于false的所有文档。考虑到您特别提供的信息 我希望在结果中同时包含这两种类型,并且只希望排除字段5设置为false的类型。 查询应如下所示:
{
"query": {
"function_score": {
"query": {
"bool": {
"must": {
"simple_query_string": {
"query": "*",
"fields": [
"field1^10",
"field2^3"
]
}
},
"must_not": [
{
"term": {
"field5": {
"value": false
}
}
}
],
"filter": [
{
"terms": {
"field3": [
"val1",
"val2"
]
}
},
{
"terms": {
"field4": [
"val4"
]
}
}
]
}
},
"functions": [
{
"gauss": {
"field1": {
"scale": "31d"
}
},
"weight": 5
}
],
"score_mode": "sum",
"boost_mode": "multiply"
}
},
"size": 10
}
我添加了一个must_not-子句,以排除所有字段5等于false的文档