elasticsearch - ElasticSearch 的 NEST 过滤器

标签 elasticsearch aggregation nest

我正在使用 NEST 查询 ElasticSearch,并且希望创建一个条件过滤器。我需要查询来匹配类别以及可选的标题和章节字段。我正在进行聚合以获得独特的值。问题在于过滤器似乎对过滤器字段执行“或”操作。你知道我在这个例子中做错了什么吗?

FilterContainer filter = new FilterContainer();

filter = Filter<Page>.Term("category", "1575");

if (title != null)
{
    filter &= Filter<Page>.Term("title", title);
}

if (chapter != null)
{
    filter &= Filter<Page>.Term("chapter", chapter);
}

var result = client.Search<Page>(s => s
    .Index(index)
    .Filter(filter)
    .Size(0)
    .Aggregations(a => a
        .Terms("my_agg", st => st
            .Field("title")
        )
    )
);

var myAgg = result.Aggs.Terms("my_agg");
IList<KeyItem> lst = myAgg.Items;
return lst;

最佳答案

这将为您提供所有行的结果,因为您的过滤器根本不会用于聚合。因此,过滤器似乎正在执行“或”运算。根据您的要求,您需要使用过滤器聚合,其中过滤器在聚合内指定。看看http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-filter-aggregation.html了解更多信息。

出于您的目的,下面是用于创建搜索请求和处理响应的更新代码。

var result = client.Search<Page>(s => s
    .Index(index)
    .Size(0)
    .Aggregations(fa => fa
        .Filter("filtered_aggs", f => f
            .Filter(fd => filter)
                .Aggregations(ta => ta
                    .Terms("my_agg", st => st
                        .Field("title")
                    )
                )
            )
        )
    )
);

var myAgg = result.Aggs.Nested("filtered_aggs").Terms("my_agg");
IList<KeyItem> lst = myAgg.Items;
return lst;

关于elasticsearch - ElasticSearch 的 NEST 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26108333/

相关文章:

elasticsearch - 嵌套 Elasticsearch 中的空字段过滤器

elasticsearch - 如何更新Elasticsearch索引中的特定字段?

elasticsearch - elasticsearch将嵌套对象的元素重新索引为关键字

elasticsearch - Nest Elastic Search 中的嵌套聚合

elasticsearch - 如何访问安装在 GCP Compute Engine 实例上的 Elastic Search?

date - 画面 : Aggregate and Non-aggregate error with Date calculations

oop - 聚合、组合、关联、直接关联

docker - 将收集到的数据传递给在 Docker 容器中运行的 Statsd

elasticsearch - 使用 NEST API Elasticsearch 的 MultiSearch 查询语法

c# - 接口(interface)上带有嵌套 ElasticType 的 ElasticSearch