gpt4 book ai didi

c# - 将ElasticSearch多索引查询转换为NEST查询时遇到问题

转载 作者:行者123 更新时间:2023-12-02 23:03:54 25 4
gpt4 key购买 nike

Sense中的以下查询返回所需的结果,但是将其转换为NEST查询时,始终会收到0个结果。我要去哪里错了?

GET /event,meeting,executive,list,call/_search
{
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{
"match": {
"name": "sample query"
}
},
{
"match": {
"agenda": "sample query"
}
}
]
}
},
"filter": {
"query": {
"match": {
"symbol": "SAMPLESYMBOL"
}
}
}
}
}
}

这是我正在使用的NEST搜索描述符,该描述符始终返回0个结果。
return arg.Indices(new[] { "event", "meeting", "executive", "list", "call" })
.Size(size)
.Filter(f => f.Query(qu => qu.Match(m => m.OnField("symbol").Query("SAMPLESYMBOL"))))
.Query(q => q
.Bool(b => b
.Should(
s => s.Match(m => m.Query(query).OnField("name")),
s => s.Match(m => m.Query(query).OnField("agenda")))));

最佳答案

在Sense中运行的查询是filtered query,而在NEST中,您正在执行除过滤器之外的查询。这可能是问题所在。

尝试此操作,这将生成与您在Sense中运行的查询等效的JSON:

.Indices(new[] { "event", "meeting", "executive", "list", "call" })
.Size(size)
.Query(q => q
.Filtered(f => f
.Query(qq => qq
.Bool(b => b
.Should(s => s.Match(m => m.OnField("name").Query(query)))
.Should(s => s.Match(m => m.OnField("agenda").Query(query)))
)
)
.Filter(ff => ff
.Query(qf => qf
.Match(m => m.OnField("symbol").Query("SAMPLESYMBOL"))
)
)
)
);

关于c# - 将ElasticSearch多索引查询转换为NEST查询时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com