elasticsearch - 加载父母和孩子
问题描述
再会:
我正在尝试一次性完成加载父母和孩子。我的查询是这样的:
ISearchResponse<Models.Facilities.Facility> response = await this._elasticClient.SearchAsync<Models.Facilities.Facility>(s =>
s.Query(q => (q.GeoDistance(g => g.Boost(1.1)
.Field(f => f.BusinessLocation)
.DistanceType(GeoDistanceType.Arc)
.Distance(search.location.distance.ToString() + "m")
.Location((double)search.location.latitude, (double)search.location.longitude)
)
&&
q.HasChild<Models.Facilities.FacilityType>(c => c.Query(qq => qq.MatchAll()).Name("FacilityType")))
||
q.GeoDistance(g => g.Boost(1.1)
.Field(f => f.ServiceAreas)
.DistanceType(GeoDistanceType.Arc)
.Distance(search.location.distance.ToString() + "m")
.Location((double)search.location.latitude, (double)search.location.longitude))
)
.Aggregations(a =>
a.Children<Models.Facilities.FacilityType>("Capacity", child => child.Aggregations(ca => ca.Histogram("Capacity",
h => h.Field(p => p.Capacity)
.Interval(10)
.Missing(0))))
.Histogram("Distance", d => d.Field(f => f.BusinessLocation)
.Interval(10)
.Order(HistogramOrder.CountDescending)))
.Sort(g => g.GeoDistance(g => g.Field(f => f.BusinessLocation)
.DistanceType(GeoDistanceType.Arc)
.Order(SortOrder.Descending)
.Unit(DistanceUnit.Miles)).GeoDistance(g => g.Field(f => f.ServiceAreas)
.DistanceType(GeoDistanceType.Arc)
.Order(SortOrder.Descending))));
Facility和FacilityType从父Document扩展。我正在尝试加载 parentFacility
及其 children FacilityType
。本质上,如果我能实现这样的目标facilityObj.facilityTypes
。让我知道这是否可能。
解决方案
InnerHits 适用于嵌套关系和父/子关系。
推荐阅读
- android - 为什么我录制的视频在使用改造上传到服务器后变成 0 字节?
- react-native - react-native 中的 ckeditor 实现
- java - 如何在数组列表中显示符号之前将数据存储到字符串?
- python - 在 Windows 上的 PyCharm 中安装 PyAudio
- sql - 带有年份条件的 SQL 语句
- php - Paypal-PHP-SDK V2 是否支持 Webhooks?
- amazon-web-services - AWS Cloudformation 的版本控制和管道
- python - 在 C++ 中返回 std::variant 的 numpy 数组
- ajax - 如何使用 ajax post 方法以模态形式显示验证摘要?
- google-apps-script - 添加/删除电子邮件以撰写小部件时更新侧面板