我在弹性搜索中存储了大约20,000个文档,每个文档大约200kb。
我的搜索总共有733次点击,我正在运行,在返回10个结果时需要大约50毫秒才能完成。
如果我将大小设置为1000以便返回所有结果,则搜索需要3-5秒才能返回。
通常我会看到这是因为它必须继续搜索,直到找到所有这些,这需要额外的时间。然而,当仅返回10个结果时,搜索仍然总共说出733次点击,因此它已经知道要返回哪些文档!
请注意,我没有在这里返回_source字段,所有我想要的是_ids列表,所以我无法想象它必须从磁盘读取更多数据,因为所有_ids都是无论如何肯定存储在索引中。
我错过了一些有效的方法吗?
(我的_ids是我们内部使用的guids。)
编辑:自发布以来,我通过对映射的两次更改重新编制索引:
这解决了这个问题,现在我在大约50毫秒内恢复了所有733 _ids。不知道哪个改变解决了它。我将其中一个退出并重新编制索引。
答案 0 :(得分:0)
需要时间。因为它需要从ES获取所有数据并计算查询的分数。 尝试 1)将字段设置为不分析您要搜索的字段。 2)将ES的商店类型从simplfs更改为mmaps ..(在elasticsearch.yml中提及“index.store.type:mmaps”..) 3)尽可能少配置碎片。碎片更多必须等于移动你要使用的节点..