附件类型数组 - 如何获取突出显示的片段的文件名?

时间:2013-04-22 17:45:02

标签: search elasticsearch attachment highlight highlighting

我使用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可以实现我需要的功能吗?怎么样?

提前致谢。

1 个答案:

答案 0 :(得分:0)

所以你想要的是存储文件名。 你在json文件中发送了文件名吗?类似的东西:

{
    "my_attachment" : {
        "_content_type" : "application/pdf",
        "_name" : "resource/name/of/my.pdf",
        "content" : "... base64 encoded attachment ..."
    }
}

如果是这样,您可以要求提供字段my_attachment._name

如果它不是正确的答案,您是否可以优化一下您的问题,并提供一个JSON示例文档(没有base64内容)和您的映射(如果有的话)?

更新:

当它来自一系列附件时,你无法从每个文件中获取它,因为一切都在场景后面变平。如果您确实需要,可能需要查看嵌套字段。