node.js - 具有过滤器和聚合的 Elastic Search 查询不返回聚合

标签 node.js elasticsearch elasticsearch-2.0

我正在使用node.js sdk 运行elasticsearch 查询,该查询在所有字段中搜索某些文本,然后将结果过滤为子集,然后根据自定义索引进行聚合。

我查看了 es 文档和几个涉及过滤器和聚合的堆栈溢出问题,以确保我的查询语法正确,并且在运行查询时没有看到语法错误。我的查询命中数据集中的 2000 多个文档,但响应对象不包含聚合。

var search_text = "Chase Bank";
var doctype_selections = ["mortgage"]; 

es.search({
    index: index_list,
    type: 'page',
    body: {
        query: {
            filtered: {
                query: {
                    match: {
                        _all: {
                            "query": search_text,
                            "operator": "and"
                        }
                    },
                    filter: {
                        terms: {
                            document_type: doctype_selections
                        }
                    }
                }
            }
        },
        aggs: {
            "top_tag_hits":{
                terms: {
                    field: "agg_index",
                    size: agg_size
                },
                aggs: {
                    "hits":{
                        top_hits: {
                            size: agg_size
                        }
                    }
                }
            }
        },
    },
    explain: true,
    size: result_size, 
}).then(function (resp) {
    var hits = resp.hits.hits;
    var aggs = resp.aggregations;
    console.log(resp);
    response.send(aggs);
}, function (err) {
    console.trace(err.message);
    response.send(err.message);
});

据我了解,es 中正确的操作顺序是查询->过滤查询->过滤查询的聚合。如果删除过滤器和聚合,查询本身将按预期工作。如果我删除过滤器,但保留聚合和查询,它将起作用并返回聚合。如果我删除聚合并保留过滤器,它也会按预期工作。

似乎查询的整个聚合部分都被忽略了。有什么问题吗?

最佳答案

关于node.js - 具有过滤器和聚合的 Elastic Search 查询不返回聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842150/

相关文章:

Elasticsearch 聚合之聚合

ElasticSearch:inner_hits 和 hightlight_query

node.js - Sphinx 和 Node.js 客户端

javascript - 使用 moment.js 将天数转换为月份和剩余天数

jdbc - Elasticsearch JDBC导入器未正确导入条目

hadoop - 使用 EsStorageHandler 在 Hive 中创建外部表时出错

javascript - Elasticsearch NodeJS 搜索 : How to retrieve results from response

mysql - 尝试在 Node js 中运行简单程序时出错

javascript - Node.js 中的全局上下文和 "this"

django - 序列化ManyToMany字段Drf干草堆