我使用ElasticSearch来索引资源。我为每个索引资源创建文档。每个资源都可以包含元数据和二进制文件数组。我决定用附件类型处理这些二进制文件。元数据被映射为字符串类型的简单字段。二进制文件映射到附件类型的数组字段(字段名为attachments
)。一切都很好-我可以根据二进制文件的内容找到我的资源。
当我要求attachments
字段的高亮片段时,我只得到这些文件的片段,而没有关于片段来源的任何信息(附件数组字段中有许多文件)。我需要突出显示的片段和附件数组元素之间的映射-例如文件的名称或至少在数组中的索引。
结果:
"attachments" => ["Fragment <em>number</em> one", "Fragment <em>number</em> two"]
我需要什么:
"attachments" => [("file_one.pdf", "Fragment <em>number</em> one"), ("file_two.pdf", "Fragment <em>number</em> two")]
如果没有这样的映射,应用程序的用户知道特定的资源包含带有关键字的文件,但不知道文件的名称。
是否有可能实现我需要使用ElasticSearch?如何?
这里要存储的是文件名。您是否在json文档中发送了文件名?例如:
{
"my_attachment" : {
"_content_type" : "application/pdf",
"_name" : "resource/name/of/my.pdf",
"content" : "... base64 encoded attachment ..."
}
}
如果是,你可以请求my_attachment._name
字段。
如果这不是正确的答案,你能精炼一点你的问题,并给出一个JSON样例文档(没有base64内容)和你的映射,如果有的话?
更新:当它来自一组附件时,你不能从每个文件中获得它,因为所有内容都是在场景后面平坦的。如果你真的需要,你可能想看看嵌套字段。