我们有一个包含以下详细信息的群集: 1.操作系统:Windows 7(64位) 2.节点数:2(i7处理器,8Gb RAM) 3. ES版本:2.4.4
我们创建了一个包含以下详细信息的索引: 1.指数大小:86 Gb 2.碎片数量:12 3.复制数量:无 5.文件数量:1.4亿 6.田地数量:15 6.对于我们设置的大多数字段" index":" not_analyzed" 7.对于我们设置的几个字段" index":" no" 8.我们没有执行任何全文搜索,聚合或排序 9.对于2个字段,我们使用编辑距离1的模糊性
12个分片均匀分布在2个节点上(每个节点6个分片)。我们正在此群集上运行多搜索查询,其中每个多搜索请求包含6个单独的查询。
我们的查询花费了太多时间来执行。来自"采取"字段我们可以看到每个单独的查询花费的时间在3-8秒的范围内。他们很少在几毫秒内执行。
平均。结果集中返回的记录数大约为800(最多10k记录和最少10条记录)。
当我们对相对较小的数据集(1000万条大小为7 Gb的记录)运行相同的测试时,每个单独的查询花费的时间在50-200毫秒的范围内。 当索引大小增加时,有人会建议可能导致查询运行缓慢的原因吗?
xeraa响应后更新:
也许您可以展示查询? 6个人的查询听起来很昂贵
POST / _msearch {"指数" :"学校"} { "查询":{ "布尔" :{ "必须" :[{ "布尔" :{ "应该" :{ "范围" :{ "马克" :{ "从" :" 100000000", "至" :" 200000000", " include_lower" :真的, " include_upper" :是的 }}}},} { "嵌套" :{ "查询" :{ "匹配" :{ "查询" :" 25", "字段" :[" subject.chapter" ]}}, "路径" :"主题" }}]}} } {"指数" :"学校"} { "查询&#34 ;: { "布尔" :{ "必须" :{ "嵌套" :{ "查询" :{ "匹配" :{ "查询" :" A100123", "字段" :[" student.id" ] "模糊" :" 1" }, "路径" :"学生" }}}} }
答案 0 :(得分:0)
1.4亿份文件意味着86GB的数据然后我想1000万份文件转化为少于8GB的数据。因此,较小的数据集可以从内存中提供(至少主要是两个8GB节点),而较大的数据集需要从磁盘提供。也许你也在使用旋转磁盘?在任何情况下,物理定律都会使您的完整数据集比较小的数据集慢。
你可以研究各种各样的事情: