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")))));
答案 0 :(得分:2)
在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"))
)
)
)
);