【发布时间】:2021-03-02 07:14:39
【问题描述】:
最近开始使用 NEST api 进行弹性搜索,卡在下面的查询中,data.e 将使用 HttpGet 中客户端的输入动态填充, 例如:用户发送 eventA,eventB,eventC 然后我们将添加到应该部分:
GET events/_search
{
"_source": false,
"query": {
"bool": {
"must": [
{"range": {
"timestamp": {
"gte": 1604684158527,
"lte": 1604684958731
}
}},
{"nested": {
"path": "data",
"query": {
"bool": {
"should": [
{"match": {
"data.e": "eventA"
}},
{"match": {
"data.e": "eventB"
}},
{"match": {
"data.e": "eventC"
}},
]
}
},
"inner_hits": {}
}}
]
}
}
}
以下是我到现在为止的想法:
var graphDataSearch = _esClient.Search<Events>(s => s
.Source(src => src
.Includes(i => i
.Field("timestamp")
)
)
.Query(q => q
.Bool(b => b
.Must(m => m
.Range(r => r
.Field("timestamp")
.GreaterThanOrEquals(startTime)
.LessThanOrEquals(stopTime)
),
m => m
.Nested(n => n
.Path("data")
.Query(q => q
.Bool(bo => bo
.Should(
// what to add here?
)
)
)
)
)
));
有人可以帮助如何根据用户发送的输入动态构建should 部分吗?
谢谢。
【问题讨论】:
标签: c# asp.net elasticsearch .net-core nest