在尝试在Elastic Search中的文档上使用统计方面时,我遇到了一些问题。这导致在Elastic Search google组上发布了以下帖子- 请参阅https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY。我试图在有关文档中使用嵌套类型的答案中应用建议,以在collections属性上提供不同的总和(请参阅https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY)
那就是我会有许多MyType实例和MyItem集合。MyItem的某些集合将具有匹配数量的实例,即第一个文档可能具有两个myitem实例,每个实例的数量均为100。如果没有嵌套类型,我不相信统计方面会汇总每个数量,因为它们不是唯一的。
因此,我创建了一个文档结构(类似于以下内容)并填充了索引。在填充索引之前,我已使用以下代码来创建嵌套文档。
client.MapFromAttributes<Page>(); [ElasticType(Name="page", DateDetection = true, NumericDetection = true, SearchAnalyzer = "standard",IndexAnalyzer = "standard")] public class MyType { public int TypeId { get; set; } public string Name { get; set; } public ANotherType AnotherProperty { get; set; } public DateTime Created { get; set; } [ElasticProperty(Type = FieldType.nested, Name="mycollection")] public List<MyItem> MyItems { get; } public class MyItem { public decimal Amount {get;set;} }
但是,当我通过巢状API运行以下查询时,没有任何结果。
query.Index("pages") .Type("page") .From(0) .Size(100) .FacetStatistical("TotalAmount", x => x.Nested("donations") .OnField("amount")));
此外,我还通过Chrome插件PostMan尝试了以下方法:
{ "facets": { "test": { "statistical": { "field": "amount" }, "nested": "mycollection" } }, "size":0 }'
并得到以下响应:
“ ..facet嵌套路径[mycollection]未嵌套..”
任何对此的想法将是巨大的。
提姆
尝试按照以下步骤映射对象:
client.MapFluent<MyType>(m=>m .MapFromAttributes() .NestedObject<MyItem>(no=>no .Name(p=>p.MyItems.First()) .Dynamic() .Enabled() .IncludeInAll() .IncludeInParent() .IncludeInRoot() .MapFromAttributes() .Path("full") .Properties(pprops => pprops .String(ps => ps .Name(p => p.FirstName) .Index(FieldIndexOption.not_analyzed) ) //etcetera ) ) );
的client.MapFromAttributes()功能非常有限,很可能会在1.0版本中删除。注释属性名称非常好,但是很快就无法表达。mapfluent调用中的MapFromAttributes()仍然是一种将int键入为int,将float键入为float,将DateTime键入为日期等的好方法。
client.MapFromAttributes()