是否可以ElasticSearch长文档?

bmvo0sr5  于 5个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(46)

我有一个学习项目,关于识别文本内容必须使用JS。输入是一个段落,包括至少15行,并在100个文本文件中搜索3到5页。输出是哪个文本文件与输入文本内容相同。Elastic可以解决吗?或者你能推荐我一些解决方案吗?

rjee0c15

rjee0c151#

我在https://web.archive.org/web/20210510013958/https://ambar.cloud/blog/2017/01/02/es-large-text/上找到了一个博客条目(链接在最初的帖子后就死了,所以使用Wayback Machine访问它),可以回答你的问题。有一个深入的例子与你的类似。
ElasticSearch可以处理大型文档,并且仍然提供相当高的性能,但是对于像您这样的情况,正确设置索引非常重要。
假设你有一个ElasticSearch文档,它的文本字段有3到5页的文本。
当您尝试查询在大文本字段中包含段落的文档时,ElasticSearch将搜索所有文档及其字段(包括大文本字段)中的所有术语。
在合并过程中,ElasticSearch会将所有找到的文档收集到内存中,包括大文本字段。在将结果构建到内存中后,ElasticSearch会尝试将这些大文档作为单个JSON响应发送。这在性能方面非常昂贵。
ElasticSearch应该将大文本字段与其他字段分开处理。为此,在索引Map中,您应该为大文本字段设置参数store:true。这告诉ElasticSearch将字段与其他文档的字段分开存储。您还应该通过在索引设置中添加此参数来将大文本字段从_source中排除:

_source: {
    excludes: [
        "your_large_text_field"
    ]
}

字符串
如果您这样设置索引,大文本字段将与_source分开。查询大文本字段现在更有效,因为它是单独存储的,不需要将其与_source合并。
总之,是的,ElasticSearch可以处理大型文本字段的搜索,并且通过一些额外的设置,它可以将搜索性能提高1100倍。

相关问题