我在Elasticsearch中有一组文档。每个文档都有一个“类别”字段,该字段是该文档所在类别的名称的从最一般到最具体的有序列表。类别层次结构是一个分类法(每个类别只有一个父级),但名称类别重叠。从根本上来说,完整的类别链是确定文档所属类别的唯一可靠方法。
例如,一个文档可能具有类别字段:
["Science", "Biology", "Journal"]
另一个可能有:
["Science", "Astronomy", "Journal"]
问题:
1)如何将文档汇总到其唯一类别中?我将“类别”字段映射为未分析,但是,一个简单的术语聚合仍会将上面的两个文档归入“日记”存储桶中。有没有一种方法可以按列表中的位置进行汇总,或者仅对列表中特定位置的术语进行汇总?
2)给定一个唯一的类别(如其路径所标识),如何过滤该类别中的文档?有没有一种方法可以根据列表中的位置进行过滤?
不,你不能。查看多值栏位
但是,数组被索引(可搜索)为无序的多值字段。在搜索时,您不能引用“第一个元素”或“最后一个元素”。而是将数组视为一袋值。
您可以做的是使用嵌套对象,或更简单的方法是将路径写在一个字段中,并对其进行分析和不分析进行索引。
{"categories":"Science Biology Journal"}
现在,您可以使用一系列过滤器和查询来对其进行搜索。例如:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句