可以弹性搜索长文件吗?

时间:2019-04-10 15:34:09

标签: node.js elasticsearch

我有一个研究项目,关于识别必须使用JS的文本内容。输入的段落至少包括15行,并在3到5页的100个文本文件中进行搜索。输出是哪个文本文件具有与输入文本相同的内容。 弹性可以解决吗?还是可以向我推荐一些解决方案?

1 个答案:

答案 0 :(得分:0)

我从https://ambar.cloud/blog/2017/01/02/es-large-text/找到了一个博客条目,可以回答您的问题。有一个与您相似的深入示例。

ElasticSearch可以处理大型文档,并且仍然可以提供不错的性能,但是对于像您这样的情况,正确设置索引很重要。
让我们假设您有一个带有3至5页文本的文本字段的ElasticSearch文档。
当您尝试在大文本字段中查询包含段落的文档时,ElasticSearch将搜索所有文档及其字段(包括大文本字段)中的所有术语。
合并期间,ElasticSearch将所有找到的文档(包括大文本字段)收集到内存中。将结果构建到内存中后,ElasticSearch将尝试将这些大文档作为单个JSON响应发送。就性能而言,这是非常昂贵的。

ElasticSearch应该与其他字段分开处理大文本字段。为此,应在索引映射中为大文本字段设置参数store:true。这告诉ElasticSearch将字段与其他文档的字段分开存储。您还应该通过在索引设置中添加以下参数来从_source中排除大文本字段:

_source: {
    excludes: [
        "your_large_text_field"
    ]
}

如果以此方式设置索引,则大文本字段将与_source分开。现在,查询大文本字段更加有效,因为它是单独存储的,不需要与_source合并。

总而言之,是的,ElasticSearch可以处理大文本字段的搜索,并且通过进行一些额外的设置可以使搜索性能提高1100 times

相关问题