【发布时间】:2022-08-09 12:02:15
【问题描述】:
这是我从前端编写的 DSL 查询;但是,由于我们需要更新 arch,我们必须从 \'c#\' 端进行查询。
{
\"query\": {
\"query_string\": {
\"fields\": [
\"siteId\"
],
\"query\": \"SE0*\"
}
},
\"aggs\": {
\"total\": {
\"cardinality\": {
\"field\": \"linkId.keyword\"
}
},
\"los_counts\": {
\"terms\": {
\"field\": \"linkId.keyword\",
\"size\": \"10000\"
},
\"aggs\": {
\"los\": {
\"filters\": {
\"filters\": {
\"los_true\": {
\"match\": {
\"losFlag\": \"Y\"
}
},
\"los_false\": {
\"bool\": {
\"must_not\": {
\"match\": {
\"losFlag\": \"Y\"
}
}
}
}
}
}
}
}
}
},
\"collapse\": {
\"field\": \"linkId.keyword\"
}
}
对于前面提到的 DSL 客户端的有效负载查询,我测试了以下 NEST 弹性客户端 \'c#\' 查询。
await _elasticClient.SearchAsync<T>(s => s
.Index(indexName)
.Take(10000)
.Query(q => (q
.MultiMatch(m => m
.Fields([\"siteId\"])
.Query(\"SE0\")
)))
.Aggregations(ag => ag
.Cardinality(\"total\", ca => ca.Field(\"linkId.keyword\"))
.Terms(\"los_counts\",tr=>tr.Field(\"linkId.keyword\")
.Aggregations(agg=>agg.Filters(\"los\",fi=>fi.))
/* */
)
)
.Collapse(col => col.Field(\"linkId.keyword\"))
).ConfigureAwait(false);
我在评论区被抓到,无法再次访问“过滤器”内的“过滤器”。那么,我们如何在这里转换呢?
标签: c# asp.net-core generics nest