在ES

时间:2015-08-07 11:15:12

标签: elasticsearch

我在组合两个查询时遇到了麻烦。 第一个:

{
  query: {
    filtered: {filter:{bool: {must_not: [{ids: {values: ["one", "two"]}}]}}}
  }
}

第二个:

{
  query: {
    bool: {
      must_not: [
        { wildcard: {url: "*.biz"} }
      ]
    }
  }
}

如果我单独运行它们,它们的工作正常。但是,如果我将它们组合成:

{
  query: {
    filtered: {filter:{bool: {must_not: [{ids: {values: ["one", "two"]}}]}}},
    bool: {must_not: [{ wildcard: {url: "*.biz"} }]}
  }
}

我收到了以下错误(为简洁起见省略了大部分错误):

Parse Failure [Failed to parse source [{\"query\":{\"filtered\":{\"filter\":{\"bool\":{\"must_not\":[{\"ids\":{\"values\":[\"one\",\"two\"]}}]}}},\"bool\":{\"must_not\":[{\"wildcard\":{\"url\":\"*.biz\"}}]}}}]]]; nested: SearchParseException[[sites_20150502][4]: query[ConstantScore(BooleanFilter(-_uid:site#one _uid:site#two))],from[-1],size[-1]: Parse Failure [No parser for element [must_not]]]; }]","status":400}

我的ES版本是1.1.1。

任何想法如何解决?

1 个答案:

答案 0 :(得分:0)

使用filtered query进行查询与过滤器的合并,这需要Redquery个参数:

filter