簡體   English   中英

使用C#Nest在ElasticSearch中按詞組聚合

[英]Aggregation by phrase in ElasticSearch using C# Nest

這是我的匯總:

return a =>
                    a.Terms("Group1", t => t.Field(ff => ff.ItemAttributeDesc1).
                        Aggregations(aa => aa.Terms("Value1", tt => tt.Field(fff => fff.SearchedFilterValue1))))
                    .Terms("Group2", t => t.Field(ff => ff.ItemAttributeDesc2).
                        Aggregations(aa => aa.Terms("Value2", tt => tt.Field(fff => fff.SearchedFilterValue2))))
                    .Terms("Group3", t => t.Field(ff => ff.ItemAttributeDesc3).
                        Aggregations(aa => aa.Terms("Value3", tt => tt.Field(fff => fff.SearchedFilterValue3))))
                    .Terms("Group4", t => t.Field(ff => ff.ItemAttributeDesc4).
                        Aggregations(aa => aa.Terms("Value4", tt => tt.Field(fff => fff.SearchedFilterValue4))))
                    .Terms("Group5", t => t.Field(ff => ff.ItemAttributeDesc5).
                        Aggregations(aa => aa.Terms("Value5", tt => tt.Field(fff => fff.SearchedFilterValue5))))
                    .Terms("Group6", t => t.Field(ff => ff.ItemAttributeDesc6).
                        Aggregations(aa => aa.Terms("Value6", tt => tt.Field(fff => fff.SearchedFilterValue6))))
                    .Terms("Group7", t => t.Field(ff => ff.ItemAttributeDesc7).
                        Aggregations(aa => aa.Terms("Value7", tt => tt.Field(fff => fff.SearchedFilterValue7))))
                    .Terms("Group8", t => t.Field(ff => ff.ItemAttributeDesc8).
                        Aggregations(aa => aa.Terms("Value8", tt => tt.Field(fff => fff.SearchedFilterValue8))))
                    .Terms("Brands", t => t.Field(ff => ff.VendorSearch).Size(60).Order(TermsOrder.TermAscending))
                    .Terms("Category", t => t.Field(ff => ff.MainSearch))
                    .Range("Price", ra => ra.Field(ff => ff.SalePrice)
                        .Ranges(
                        pr => pr.From(50).To(100),
                        pr => pr.From(100).To(250),
                        pr => pr.From(250).To(500),
                        pr => pr.From(500).To(750),
                        pr => pr.From(750).To(1000),
                        pr => pr.From(1000).To(1500),
                        pr => pr.From(1500).To(2000),
                        pr => pr.From(2000).To(2500),
                        pr => pr.From(2500).To(3000),
                        pr => pr.From(3000).To(3500),
                        pr => pr.From(3500)));

除了一件事,它按預期工作。 我必須通過完全匹配來匯總。 例如,如果我有術語字段“字段”(一個詞),則工作正常。 但是,如果該術語包含多個單詞(或具有特定符號),則它不起作用。 不起作用,因為用空格和符號將短語彈性拆分。 我需要100%匹配。 有人可以幫我解決問題嗎?

發生這種情況是因為要匯總的字段被映射為已分析的字符串,這是字符串類型的默認映射,要解決此問題,請將要匯總的相關字段映射為type: stringindex: not_analyzed

查看有關已分析字符串的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM