【发布时间】:2018-08-14 20:18:02
【问题描述】:
有没有办法在嵌套查询中使用“script_fields”向返回的 inner_hits 添加字段?示例:
{
"nested": {
"inner_hits": {},
"path": "companies",
"score_mode": "sum",
"query": {},
"script_fields": {
"overlap" : {
"script": {
"source": "................................",
"params": {
"from": "2012-01-01",
"to": "2015-06-30"
}
}
}
}
}
我执行 n 个嵌套查询,向每个查询传递一组特定参数。这个想法是让源脚本根据提供的参数为每个内部命中的重叠字段分配一个值。
Val 建议将 script_fields 添加到内部点击后更新
看起来像在定义不同 inner_hits 的同一嵌套路径上执行更多嵌套查询会使 ES 剥离 inner_hits 匹配项。示例:
{
"nested": {
"inner_hits": {
"script_fields": {
"overlap" : {
"script": {
"source": "................................",
"params": {
"from": "2012-01-01",
"to": "2015-06-30"
}
}
}
}
},
"path": "companies",
"score_mode": "sum",
"query": {},
},
{
"nested": {
"inner_hits": {
"script_fields": {
"overlap" : {
"script": {
"source": "................................",
"params": {
"from": "2012-01-01",
"to": "2015-06-30"
}
}
}
}
},
"path": "companies",
"score_mode": "sum",
"query": {},
}
如果像这样运行更嵌套的查询,我会得到正确的匹配,但不会返回所有预期的 inner_hits。我可以获得所有命中,只为不同的 inner_hits 提供一个随机名称,例如:
"inner_hits": {
"name": [random name]
"script_fields": {
"overlap" : {
......
}
}
}
然后我得到正确的命中结果,但有一些缺点。我必须检查重复的结果,因为命中被添加到不同的结果集中并且不再是唯一的。我必须使用正则表达式解析结果以重建统一列表。
这听起来像是一个错误吗?
【问题讨论】:
标签: elasticsearch