如何忽略弹性搜索中指定术语的条件?

时间:2015-10-28 10:57:41

标签: elasticsearch

有没有办法可以忽略在指定字段的弹性搜索查询中应用必须条件

"query": {
  "filtered": {
     "filter": {
        "bool": {
           "must": [
              {
                 "term": {
                    "user": "abc@xyz.com"
                 }
              }
           ]
        }
     }
  }
}

在上面的查询中,我试图根据特定用户过滤所有记录。

要求是,在一个术语,即字段中,我想要返回所有记录而不管用户。

前:

"query": {
  "filtered": {
     "filter": {
        "bool": {
           "must": [
              {
                 "term": {
                    "user": "abc@xyz.com"
                 },
                 "term":{
                    "field":"events",
                    "size":0
                 }
              }
           ]
        }
     }
  }
}

有可能吗?

目前我正在使用2个查询处理它,但有没有机会在单个查询中执行此操作?

提前致谢...

1 个答案:

答案 0 :(得分:0)

如果我理解这个问题,也许是这样的事情:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "should": [
            {
              "bool": {
                "must": [
                  {
                    "term": {
                      "user": "abc@xyz.com"
                    }
                  }
                ],
                "must_not": [
                  {
                    "term": {
                      "field": "events"
                    }
                  }
                ]
              }
            },
            {
              "bool": {
                "must": [
                  {
                    "term": {
                      "field": "events"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}