【发布时间】:2022-01-22 11:28:51
【问题描述】:
我遇到了从 6.4 升级到 6.8 时无法解决的 ElasticSearch 查询问题:
我的架构有这个
...
"levels" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"curriculaCount" : {
"type" : "integer"
},
"hoursEarned" : {
"type" : "half_float"
},
"levelCode" : {
"type" : "keyword"
}
}
},
...
我有一个在 Kibana 开发工具中运行良好的查询:
{
"query": {
"nested": {
"path": "banner.levels",
"query": {
"bool": {
"filter": [
{
"match": {
"banner.levels.levelCode": "UG"
}
},
{
"range": {
"banner.levels.curriculaCount": {
"gt": 0
}
}
},
{
"range": {
"banner.levels.hoursEarned": {
"lte": 29
}
}
}
]
}
}
}
}
}
我对应的 c# 代码曾经在 6.4 中工作,但在 6.8 中失败了,并且没有多少尝试可以让我成功查询:
queries.Add(new NestedQuery()
{
Path = Infer.Field(x => x.banner.levels),
Query = new BoolQuery()
{
Must = new List()
{
new NumericRangeQuery()
{
Field = Infer.Field(x => x.banner.levels.First().hoursEarned),
LessThan = 30
},
new NumericRangeQuery()
{
Field = Infer.Field(x => x.banner.levels.First().curriculaCount),
GreaterThan = 0
},
new TermQuery()
{
Field = Infer.Field(x => x.banner.levels.First().levelCode.Suffix("keyword")),
Value = "UG"
}
}
}
});
我所做的任何事情都会给我带来可怕的“无效的 NEST 响应,该响应是由对 POST 的不成功的低级调用构建的......”
我希望有办法获得更详细的错误消息...
非常感谢任何帮助!
更新
我终于解决了这个问题,它与上面的代码无关。清除所有索引,重新加载架构,然后用新数据修复所有不稳定的行为