[英]ElasticSearch index topology - field overrides
我很好奇是否可以在ElasticSearch中设置索引结构和查询,以便可以在尽可能少的查询中实现以下操作。
让我们定义系统中存在的一些东西。
id
, tone
, date
。 它包含一些全文元素,但已经处理完毕 idReport
id
- idReport
映射的形式表示,可以具有第三个可选字段: tone
的替代 我们系统中的主要障碍是,关联链接中存在的tone
需要覆盖文档中所有方面的tone
,但不能替换。 有些报告可能认为文档是肯定的,而另一些报告则认为它是中立的,甚至是肯定的。
我正在考虑将报表链接存储为文档中的嵌套字段。 实际上,文档如下:
{
id: integer,
tone: integer,
reports: [
{ id: integer,
tone: integer
}
]
}
关键问题是在一个查询中是否有可能使用嵌套字段中存在的任何内容无缝覆盖该音调。 如果没有,最好的前进方向是什么?
可以在1个查询中使用脚本字段 。
我要做的是将嵌套报表重组为这样的对象:
{
id: integer,
tone: integer,
reports: {
idA: {
tone: integer
} ,
idB: {
tone: integer
}
}
}
然后进行类似的查询,该查询返回“ toneWithFallback”作为包含所需内容的字段:
{
"query" : {
...
},
"script_fields" : {
"toneWithFallback" : {
"script" : "_source.reports[reportId].empty || _source.reports[reportId].tone.empty ? _source.reports[reportId].tone: _source.tone ",
"params" : {
"reportId" : "<theIdAsAString>"
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.