如何优化elasticsearch percolator索引内存性能

2024-01-06

使用elasticsearch percolator索引时有没有办法提高内存性能?

我为我的渗滤器创建了一个单独的索引。我有大约 1 000 000 个用户创建的已保存搜索(用于电子邮件警报)。创建此渗透器索引后,我的堆使用率飙升至 100%,并且服务器对任何查询都没有响应。我的资源有限,无法简单地投入更多内存来解决问题。唯一的解决方案是删除包含我保存的搜索的索引。

据我所知,渗滤器索引永久驻留在内存中。这完全有必要吗?有没有办法限制这种行为但仍然保留功能?有没有办法优化我的数据/查询/索引结构来避免这种行为,同时仍然达到预期的结果?


从 ElasticSearch 的角度来看,这个问题没有解决方案,也不可能有解决方案。我直接与 ElasticSearch 人员交谈,他们的答案是:“投入更多硬件”。

然而,我找到了一种方法来解决这个问题,减少我对该功能的使用。当我分析保存的搜索数据时,我发现我的搜索包含大约 100 000 个唯一关键字搜索以及创建超过 1 000 000 个保存搜索的各种过滤器排列。

如果我看一下过滤器,它们是这样的:

  • 地点 - 300+
  • 工业 - 50+
  • etc...

给出解空间:

100 000 * >300 * >50 * ... ~= > 1 500 000 000

但是,如果我要分解搜索并在渗滤器索引中单独索引关键字搜索和过滤器, 我最终的搜索量要少得多:

100 000 + >300 + >50 + ... ~= > 100 350

这些搜索本身比原始搜索更小、更简单。

现在,我创建第二个(非渗透器)索引,列出所有 1 000 000 个已保存的搜索,并包括来自 渗滤器指数。

然后我过滤文档,然后执行第二个查询,根据关键字过滤搜索并过滤过滤器结果。 我什至能够保留相关性分数,因为这纯粹是从关键字搜索返回的。

这种方法将显着减少我的渗透器索引内存占用,同时达到相同的目的。

我想邀请对此方法的反馈(我还没有尝试过,但我会随时通知您)。

同样,如果我的方法成功,您认为值得提出功能请求吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何优化elasticsearch percolator索引内存性能 的相关文章

随机推荐

  • RabbitMQ - 通道关闭:连接错误(SpringXD 重复关闭rabbitmq 连接。)

    我度过了一个糟糕的夜晚 试图弄清楚 RabbitMQ 和 SpringXD 到底发生了什么 不幸的是没有成功 问题 SpringXD反复关闭RabbitMQ连接 或报告与通道缓存大小相关的警告 SpringXD 日志的片段 在流初始化 自动
  • 猫鼬自定义模式类型

    我从 mongoose 文档中了解到 可以创建自定义模式类型并将其添加到已有的模式类型中 正如所建议的 我尝试研究猫鼬长的例子 https github com aeckmann mongoose long https github com
  • 退格键在 Eclipse Mars 中恢复

    我在 Eclipse Mars 4 5 0 中的退格键的作用类似于删除键 它删除右侧字符而不是左侧字符 这真的很令人困惑 也许我不小心使用了快捷键 我尝试重新启动 Eclipse 但没有成功 我还尝试将键绑定首选项切换为 Emacs 方案
  • 检查页面是父页面还是子页面?

    是否可以检查页面是父页面还是子页面 我的页面设置如下 家长 子页1 子页2 etc 如果它是父页面 我想显示某个菜单 如果它在子页面上 我想显示不同的菜单 我知道我可以做类似下面的事情 但我想让它更加动态 而不包含特定的页面 ID 您可以测
  • “kotlin-noarg”插件在 Realm 中不起作用

    kotlin allopen 插件可以工作 但 kotlin noarg 插件不起作用 我能怎么做 下面是代码 构建 gradle buildscript ext kotlin version 1 1 3 2 repositories go
  • cin 首次使用函数后不允许输入

    对于 C 或任何类型的编程来说都是全新的 我正在尝试进行简单的输入 输出 但是在回答第一个问题后 我没有机会输入第二个输入 我尝试过在网上查找内容 但考虑到这是一个非常简单的代码 据说哈哈 没有人遇到过同样的问题 这让我来到这里 inclu
  • 生产中的高超音速休眠?

    开发商高超音速 http hsqldb org 承诺提高绩效 但我担心使用 hsqlDB 的管理和其他方面会出现问题 有人在生产中使用这个吗 这是个好主意吗 许多公司 http hsqldb org web hsqlUsing html在生
  • 如何评估 WHERE 子句中的输入

    我正在我的一个变量中输入一个输入 基本上我想做一些类似的事情 SELECT FROM PEOPLE WHERE IF INPUT 1 ITEMID 16 OR ITEMID 13 ELSE IF INPUT 2 ITEMID 11 OR I
  • Java SFTP (apache vfs2) - 密码带有@

    我正在尝试使用 org apache commons vfs2 通过 SFTP 下载文件 问题是 密码包含 字符 因此这会导致 URI 被错误解析 org apache commons vfs2 FileSystemException Ex
  • 有没有办法只限制mysql中的较低范围?

    我想获取查询中除第一行之外的所有行 我怎样才能做到这一点 您可以使用大量行 偏移量为1 LIMIT 1 18446744073709551615
  • 为什么 JSON 列不能是唯一键?

    我有一个表 里面有一个名为ColumnName该列的数据类型是JSON 我正在努力让它成为unique key 但这是不可能的 我收到了这条消息 3152 JSON 列 columnName 不能在键规范中使用 我想了解为什么我不能将该列设
  • 在 SQL Server 中从 base64 字符串转换为 varbinary(max)

    我的表中以二进制形式存储了 PDF 文档 存储 PDF 字节的列是 typevarbinary max 我想要updateSQL Studio 中包含更新文档的一条记录 我尝试完成此操作的方式如下所示 UPDATE table SET fi
  • Azure 搜索是否支持拼写错误和同义词?

    我见过讨论这两个主题的线程 Azure 搜索是否处理同义词 https stackoverflow com questions 31180405 does azure search handle synonyms 搜索 API 中的模糊搜索
  • 没有简单组件的提供者

    直到 5 分钟前它才工作 这毫无意义 这是组件 import Component OnInit from angular core import Osobaa from osobaa import Osoba from osoba impo
  • RUBYLIB 环境路径

    所以目前我已将以下内容包含在我的 bashrc 文件中 export RUBYLIB home git project app helpers 我正在尝试使用具有以下规范的规范来运行 rspec require output helper
  • 在Python中读取csv文件时列出索引超出范围错误

    我有这段代码 我正在读取 csv 文件 使用NamedTemporaryFile更改 csv 文件的内容 def update localcsv ping Yes No filename file1 csv tempfile NamedTe
  • 发布 TypeScript 包时如何处理可选的对等依赖项?

    将 TypeScript 包发布到 npm 并提供接受来自一个对等依赖项或另一个对等依赖项的输入的函数时 如何定义可选的对等依赖项 import ExternalFoo from foo import ExternalBar from ba
  • 如何重写此 MySQL 查询,使其不会引发此错误:您无法在 FROM 子句中指定目标表“crawlLog”进行更新?

    我正在尝试从公司表中获取 id 但该 id 尚未出现在crawlLog 表中 然后我需要将该companyId 插入crawlLog 表中 我需要在一次调用中执行此操作 以便并行爬网程序在其他爬网程序选择了某个 url 但尚未将其插入爬网日
  • 如何在小窗口中打开“zxing条码”扫描屏?

    zxing Barcode 扫描仪在我的应用程序中成功运行 https github com journeyapps zxing android embedded https github com journeyapps zxing and
  • 如何优化elasticsearch percolator索引内存性能

    使用elasticsearch percolator索引时有没有办法提高内存性能 我为我的渗滤器创建了一个单独的索引 我有大约 1 000 000 个用户创建的已保存搜索 用于电子邮件警报 创建此渗透器索引后 我的堆使用率飙升至 100 并