Python 使用pyes的弹性搜索性能
很抱歉交叉发布。以下问题也发布在Elastic Search的google group上 简言之,我试图找出为什么在搜索包含150万条记录的ES索引时无法获得最佳性能 目前,我能在2秒钟内完成大约500-1000次搜索。我认为这应该是更快的数量级。目前我也不使用节俭 下面是我如何检查性能的 使用0.19.1版本的pyes(从github试用了stable和dev版本) 使用0.13.8版本的请求Python 使用pyes的弹性搜索性能,python,
elasticsearch,pyes,Python,
elasticsearch,Pyes,很抱歉交叉发布。以下问题也发布在Elastic Search的google group上 简言之,我试图找出为什么在搜索包含150万条记录的ES索引时无法获得最佳性能 目前,我能在2秒钟内完成大约500-1000次搜索。我认为这应该是更快的数量级。目前我也不使用节俭 下面是我如何检查性能的 使用0.19.1版本的pyes(从github试用了stable和dev版本) 使用0.13.8版本的请求 conn = ES(['localhost:9201'],timeout=20,bulk_size=
conn = ES(['localhost:9201'],timeout=20,bulk_size=1000)
loop_start = time.clock()
q1 = TermQuery("tax_name","cellvibrio")
for x in xrange(1000000):
if x % 1000 == 0 and x > 0:
loop_check_point = time.clock()
print 'took %s secs to search %d records' % (loop_check_point-loop_start,x)
results = conn.search(query=q1)
if results:
for r in results:
pass
# print len(results)
else:
pass
感谢您为我扩展搜索提供的帮助
谢谢 这不只是一个并发问题吗 您正在按顺序执行所有查询。因此,查询必须在下一个查询开始之前完成。如果服务器有1ms RTT,这将限制每秒1000个请求
尝试并行运行脚本的几个实例,看看您获得了什么样的性能。这不只是并发性的问题吗 您正在按顺序执行所有查询。因此,查询必须在下一个查询开始之前完成。如果服务器有1ms RTT,这将限制每秒1000个请求
尝试并行运行脚本的几个实例,看看您的性能如何。使用pye有几种方法可以提高性能
- 首先,尝试摆脱DottedDict类/对象,该类/对象用于为获得的每个结果从每个json/dict生成一个对象李>
- 第二,将json编码器切换到ujson
我通过扩展ES类并替换“\u send\u request”函数来实现这一点。使用pyes有几种方法可以改进这一点
- 首先,尝试摆脱DottedDict类/对象,该类/对象用于为获得的每个结果从每个json/dict生成一个对象李>
- 第二,将json编码器切换到ujson