gpt4 book ai didi

c# - Elasticsearch.net NEST Bool查询未生成预期的请求

转载 作者:行者123 更新时间:2023-12-03 00:33:36 27 4
gpt4 key购买 nike

我试图在使用Bool查询的NEST中创建一个Elasticsearch查询,但是我放在Bool方法中的所有内容似乎都被忽略了。

这是我尝试过的代码:

var query = "my query";
var fileType = "Poster";
var searchResults = _client.Search<Doc>(s =>
s.Query(q =>
q.Bool(
b => b.Must(
m => m.MatchPhrase(mp =>
mp.Query(query).Fuzziness(2))
).Must(m => m.Match(
mp => mp.Query(fileType))))
).Highlight(x =>
x.OnFields(y =>
y.OnField(f => f.File)
.PreTags("<strong>")
.PostTags("</strong>"))
).Fields("fileType", "title"));

这是NEST从该代码生成的JSON请求。请注意,它缺少整个查询属性:
{
"highlight": {
"fields": {
"file": {
"pre_tags": [
"<strong>"
],
"post_tags": [
"</strong>"
]
}
}
},
"fields": [
"fileType",
"title"
]
}

我尝试去除多余的突出显示和字段选择,以防引起问题,只是离开了Query和Bool:
var searchResults = _client.Search<Doc>(s => 
s.Query(q =>
q.Bool(
b => b.Must(
m => m.MatchPhrase(mp =>
mp.Query(query).Fuzziness(2))
)
.Must(m => m.Match(mp => mp.Query(fileType))))
));

此代码生成一个空的JSON对象。

我在NEST文档中找不到Bool和Must方法的提法,也无法通过反复试验弄清楚。

我究竟做错了什么?

笔记

我已将NEST的Query方法与一个简单的QueryString一起使用。它生成了预期的JSON请求,因此我很确定我配置的方式是正确的。

这是我尝试使用NEST重新创建的JSON查询:
{
"fields": [
"title",
"fileType"
],
"query": {
"bool": {
"must": [
{
"match": {
"fileType": {
"query": "Poster"
}
}
},
{
"match_phrase": {
"file": {
"query": "my query",
"fuzziness": 2
}
}
}
]
}
},
"highlight": {
"fields": {
"file": {}
}
}
}

最佳答案

您的查询缺少.OnField(f => f.YourField)
NEST由于conditionless忽略了此类查询。

我希望现在很清楚。

更新

您应该将查询更改为以下内容:

var searchResults = client.Search<Doc>(s => s
.Query(q => q
.Bool(b => b
.Must(
m => m.Match(mp => mp.OnField(f => f.YourField).Query(fileType)),
m => m.MatchPhrase(mp => mp.OnField(f => f.YourField).Query(query).Fuzziness(2)))
))
.Highlight(x => x
.OnFields(y => y
.OnField(f => f.File)
.PreTags("<strong>")
.PostTags("</strong>")))
.Fields("fileType", "title"));

在 bool(boolean) 查询中,只应使用 .Must(..)一次,否则将替换以前的 .Must(..)定义。幸运的是,您可以将多个查询传递给 .Must(..)方法。

关于c# - Elasticsearch.net NEST Bool查询未生成预期的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993248/

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