我使用ElasticSearch来索引资源。我为每个索引资源创建文档。每个资源都可以包含元数据和二进制文件数组。我决定用attachment类型处理这些二进制文件。元数据被映射到字符串类型的简单字段。二进制文件映射到attachment类型的数组字段(名为attachments
的字段)。一切正常 - 我可以根据二进制文件的内容找到我的资源。
我使用的另一个ElasticSearch功能是突出显示。我成功地为元数据和二进制文件配置了突出显示,但是......
当我要求我的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可以实现我需要的功能吗?怎么样?
提前致谢。
答案 0 :(得分:0)
所以你想要的是存储文件名。 你在json文件中发送了文件名吗?类似的东西:
{
"my_attachment" : {
"_content_type" : "application/pdf",
"_name" : "resource/name/of/my.pdf",
"content" : "... base64 encoded attachment ..."
}
}
如果是这样,您可以要求提供字段my_attachment._name
。
如果它不是正确的答案,您是否可以优化一下您的问题,并提供一个JSON示例文档(没有base64内容)和您的映射(如果有的话)?
更新:
当它来自一系列附件时,你无法从每个文件中获取它,因为一切都在场景后面变平。如果您确实需要,可能需要查看嵌套字段。