elasticsearch,nest,C#,.net,elasticsearch,Nest" /> elasticsearch,nest,C#,.net,elasticsearch,Nest" />

C# 使用NEST使用ElasticSearch 2.x搜索多个类型时,如何获得混合结果?

C# 使用NEST使用ElasticSearch 2.x搜索多个类型时,如何获得混合结果?,c#,.net,elasticsearch,nest,C#,.net,elasticsearch,Nest,我是弹性搜索的新手,偶然发现了这个问题。 当从同一索引中搜索多个文档类型时,这些类型将被追加到结果文档集中,而不是按字段进行默认排序。 我的文档类型共享相同的字段 这是我的搜索查询: var response = await client.SearchAsync<ProductListResponse>(s => s .Type("product,productbundle") .Index(index)

我是弹性搜索的新手,偶然发现了这个问题。 当从同一索引中搜索多个文档类型时,这些类型将被追加到结果文档集中,而不是按字段进行默认排序。 我的文档类型共享相同的字段

这是我的搜索查询:

        var response = await client.SearchAsync<ProductListResponse>(s => s
            .Type("product,productbundle")
            .Index(index)
            .From(from)
            .Size(size)
            .Query(fsq => fsq
                .FunctionScore(c => c.Query(q => q
                    .MultiMatch(m => m.Query(request.Query)
                    .Fields(f => f
                        .Field(n => n.Name, 100.0)
                        .Field(n => n.NameWithoutSpecialChars, 100.0)
                        .Field(n => n.ProductName)
                        .Field(n => n.TeaserText)
                        .Field(n => n.Description)
                        .Field(n => n.Features)
                        .Field(n => n.Modules)
                       )
                    .Type(TextQueryType.PhrasePrefix)
                   )
                ).Functions(f => f
                    .FieldValueFactor(b => b
                            .Field(p => p.IsBoosted)
                            .Modifier(FieldValueFactorModifier.Log1P))
                )
             )
           )
            .Sort(ss => ss
                .Descending(SortSpecialField.Score))
            .PostFilter(filter => filter.Bool(b => b.Must(must => allFilters)))
            .Source(sr => sr
                .Include(fi => fi
                    .Field(f => f.Name)
                    .Field(n => n.ProductName)
                    .Field(n => n.TeaserText)
                    .Field(f => f.Image)
                    .Field(f => f.Thumbnail)
                    .Field(f => f.Url)
                    .Field(f => f.Features)
                )
            )
       );
var response=wait client.SearchAsync(s=>s)
.Type(“产品、产品包”)
.索引(索引)
.从(从)
.尺码(尺码)
.Query(fsq=>fsq
.FunctionScore(c=>c.Query(q=>q
.MultiMatch(m=>m.Query(request.Query)
.Fields(f=>f
.Field(n=>n.Name,100.0)
.Field(n=>n.name,不带特殊字符,100.0)
.Field(n=>n.ProductName)
.Field(n=>n.testerText)
.Field(n=>n.Description)
.Field(n=>n.Features)
.Field(n=>n.Modules)
)
.Type(TextQueryType.PhrasePrefix)
)
).函数(f=>f
.FieldValueFactor(b=>b
.Field(p=>p.IsBoosted)
.Modifier(FieldValueFactorModifier.Log1P))
)
)
)
.Sort(ss=>ss
.下降(SortSpecialField.得分))
.PostFilter(filter=>filter.Bool(b=>b.Must(Must=>allFilters)))
.Source(sr=>sr
.包括(fi=>fi
.Field(f=>f.Name)
.Field(n=>n.ProductName)
.Field(n=>n.testerText)
.Field(f=>f.Image)
.Field(f=>f.缩略图)
.Field(f=>f.Url)
.Field(f=>f.Features)
)
)
);
感谢您的帮助

我不希望将带有附加项的产品类型调整为productbundle类型。

我可以确认.type()不会影响订单。
我的问题是一个增强的属性在为bundle编制索引时没有获得值。

您能解释一下“结果文档集中附加了哪些类型,而不是按照增强字段进行默认排序。”这意味着,可能有一个小的数据集示例?@RussCam Hello Russ,问题是“productbundle”文档最后添加到返回结果列表中。因此,在包含文档的数组中,返回集如下所示: