elastic.js中的弹性搜索聚合查询

时间:2015-12-31 16:06:09

标签: javascript elasticsearch elasticjs

我很难将elastic.js.用于弹性搜索转换为{ "aggs": { "foo": { "filter": { "bool": { "must": [ { "query": { "query_string": { "query": "*" } } }, { "terms": { "shape": [ "wc" ] } } ] } }, "aggs": { "field": { "terms": { "field": "shape", "size": 10, "exclude": { "pattern": [] } } } } } }, "size": 0 } 我正在阅读文档,但我无法弄明白。您可以在网上找到的示例主要是关于弃用的facets功能,这不是很有用。 例如聚合的JSON如下:

Test.Initialize();

2 个答案:

答案 0 :(得分:1)

这就是filter aggregation elasticjsejs.Request() .size(0) .agg(ejs.FilterAggregation("foo").filter(ejs.BoolFilter() .must(ejs.TermsFilter('shape', 'wc')) .must(ejs.QueryFilter(ejs.QueryStringQuery().query("*")))) .agg(ejs.TermsAggregation("field").field("shape").size(10).exclude("my_pattern")) )

的对比方式
shape

顺便说一句,您正在aggregations上过滤,然后对其进行String topicStatusString = "1234:0,567:1,89:2"; String someId = "1234"; topicStatusString.replaceAll(someId+":0", someId+":1"); topicStatusString.replaceAll(someId+":2", someId+":1"); 。我不确定你到底在想什么。

我发现他们的similar question非常好,而且他们有一个很棒的documentation来检查您的查询是否有效且正确。这对你有很大的帮助

希望这会有所帮助!!

答案 1 :(得分:0)

您似乎在aggs元素下放错了查询。试试这个:

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "query": {
            "query_string": {
              "query": "*"
            }
          }
        },
        {
          "terms": {
            "shape": [
              "wc"
            ]
          }
        }
      ]
    }
  },
  "aggs": {
    "foo": {
      "terms": {
        "field": "shape",
        "size": 10,
        "exclude": {
          "pattern": []
        }
      }
    }
  }
}