0

我使用 ElasticSearch 来索引资源。我为每个索引资源创建文档。每个资源都可以包含元数据和二进制文件数组。我决定处理这些带有附件类型的二进制文件。元数据映射到字符串类型的简单字段。二进制文件映射到附件类型的数组字段(名为的字段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 实现我所需要的?如何?

提前致谢。

4

1 回答 1

0

所以你在这里想要的是存储文件名。您是否在 json 文档中发送了文件名?就像是:

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

如果是这样,您可能可以要求 field my_attachment._name

如果这不是正确的答案,您能否稍微提炼一下您的问题并提供一个 JSON 示例文档(没有 base64 内容)和您的映射(如果有)?

更新:

当它来自一系列附件时,您无法从每个文件中获取它,因为一切都在幕后展开。如果你真的需要,你可能想看看嵌套字段。

于 2013-04-22T21:22:29.643 回答