【发布时间】:2018-11-06 05:21:44
【问题描述】:
我正在使用 Nest 来查询 Elasticsearch,我已经为我的搜索编写了这个查询:
var searchResponse = _elasticClient.Search<AdDocument>(s => s
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mm => mm
.Fields(f => f.Field(p => p.Title, 1.5).Field(p => p.Description))
.Query("MyKeyword")
.Fuzziness(Fuzziness.Auto)
)
)
.Filter(fi => fi
.Bool(fb => fb
.Must(m => m.Range(r => r.Field(f => f.NoOfBedrooms == 3)),
m => m.Range(r => r.Field(f => f.NoOfBathrooms == 2)),
m => m.Range(r => r.Field(f => f.Price > 2000))
)
)
)
)
)
);
我想要实现的是动态构建此查询,具体取决于传入的过滤器。如何使用 Object Initializer 编写此查询?
例如,我想在查询之外创建这三个范围过滤器并将它们放在 3 个对象中,例如 rangeFilter1、rangeFilter2 和 rangeFilter3,然后在查询内部使用逻辑与 (&&) 将它们组合起来.
【问题讨论】:
标签: elasticsearch nest elasticsearch-net