1

我很难将aggregation query弹性搜索翻译成elastic.js.我正在阅读文档,但我就是想不通。您可以在网上找到的示例大多是关于已弃用的方面功能,这不是很有用。JSON 示例聚合如下:

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

2 回答 2

2

这就是你嵌套terms aggregationfilter aggregation方式elasticjs

ejs.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对其进行操作。我不确定您到底在尝试什么。

我发现他们的文档非常好,而且他们有一个很好的工具来检查您的查询是否有效和正确。这会对你有很大帮助

希望这可以帮助!!

于 2015-12-31T18:28:40.740 回答
0

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

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "query": {
            "query_string": {
              "query": "*"
            }
          }
        },
        {
          "terms": {
            "shape": [
              "wc"
            ]
          }
        }
      ]
    }
  },
  "aggs": {
    "foo": {
      "terms": {
        "field": "shape",
        "size": 10,
        "exclude": {
          "pattern": []
        }
      }
    }
  }
}
于 2015-12-31T16:38:23.907 回答