【发布时间】:2022-01-17 10:01:27
【问题描述】:
在 .net 中使用 Nest 库执行此脚本查询时出错:
new ScriptQuery
{
Lang = "painless",
Source = "(!doc[params.headquartersCoordinatesField].empty && doc[params.headquartersCoordinatesField].arcDistance(params.latitude, params.longitude) * 0.000621371 <= params.maxDistance) || (!doc[params.offices].empty && (for (def office : doc[params.offices].values){if(office.coordinates).arcDistance(params.latitude, params.longitude) * 0.000621371 < =params.maxDistance{return true;}}))",
Params = new Dictionary<string, object>
{
{"headquartersCoordinatesField", Field<Provider>(f => f.Headquarters.Coordinates)},
{"offices", Field<Provider>(f => f.Offices)},
{"latitude", _latitude},
{"longitude", _longitude},
{"maxDistance", 50}
}
}
这是我得到的错误: ServerError:类型:search_phase_execution_exception 原因:“所有分片失败” CausedBy:“类型:script_exception 原因:“编译错误” CausedBy:“类型:非法参数异常原因:“['for'] 附近的令牌序列无效。” CausedBy: "类型:no_viable_alt_exception 原因:"no_viable_alt_exception: null""""
我还在循环中尝试了布尔变量并尝试在最后返回它,但我得到了同样的错误。
我尝试使用计数器 (i) 进行简单的 for 循环来检查语法但同样的错误。所以看起来我在循环中使用的任何东西都返回错误。
有人可以帮助找到正确的语法吗?提前致谢。
【问题讨论】:
标签: elasticsearch elasticsearch-painless