使用Nest Client进行弹性搜索的动态方面

时间:2012-12-17 14:42:50

标签: c# elasticsearch nest

我需要一种控制构建方面的方法,而不仅仅使用嵌套流畅的api。主要的需求是我可能需要包括或排除所有问题或面部过滤器。

下面的代码有效,但要更改方面,我需要重新编译。我看到它需要一个Func,但我无法返回正确的类型以使其工作。

        sd.FacetTerm("Name", t => t 
            .OnField("Field")
            .Size(facet.Size)
            .AllTerms()
        );

下面的代码不起作用,我很确定原因。在调试时,我看到它创建了facet术语,但没有“FacetBuilder”提供的任何数据。

    sd.FacetTerm(facet.Name, t => FacetBuilder(options));


    public TermFacetDescriptor<CatalogMapping> FacetBuilder(FacetOptions options)
    {
        var facet = new TermFacetDescriptor<CatalogMapping>();
        facet.OnField(options.Field);

        facet.Size(options.Size);
        if (options.IncludeAllTerms)
            facet.AllTerms();

        return facet;
    }

1 个答案:

答案 0 :(得分:2)

需要传递对象引用并修改该实例。

public TermFacetDescriptor<CatalogMapping> FacetBuilder(TermFacetDescriptor<CatalogMapping> termFacet, FacetOptions options)
    {
        termFacet.OnField(options.Field);
        termFacet.Size(options.Size);

        if (options.IncludeAllTerms)
            termFacet.AllTerms();

        return termFacet;
    }