如果存在,则对字段 1 应用搜索,在字段 2 上应用其他搜索,否则在字段 2 上应用弹性搜索



索引中有两个字段。让我们假设为字段 1 和字段 2。

  • 检索案例

    • 两者都可能出现
    • 字段 1 或字段 2 可能出现
    • Fiels1 和 Field 2 可能会出现

在这里,我必须创建一个查询,例如

  • 如果字段 1 存在,则对其应用搜索并忽略字段 2
  • 如果字段 1 不存在,则在字段 2 上应用搜索
  • 如果两者都存在,则仅在字段 1 上应用搜索,忽略字段 2

有人可以帮忙查询吗

我认为您正在寻找的是 1should,由 3 个musts 组成:

GET conditionals/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"exists": {
"field": "field1"
}
},
{
"match": {
"field1": "abc"
}
}
]
}
},
{
"bool": {
"must": [
{
"bool": {
"must_not": [
{
"exists": {
"field": "field1"
}
}
]
}
},
{
"match": {
"field2": "xyz"
}
}
]
}
},
{
"bool": {
"must": [
{
"bool": {
"must": [
{
"exists": {
"field": "field1"
}
},
{
"exists": {
"field": "field2"
}
}
]
}
},
{
"match": {
"field2": "xyz"
}
}
]
}
}
],
"minimum_should_match": 1
}
}
}

最新更新