[英]elastic search performance using pyes
抱歉,交叉发布。以下问题也发布在Elastic Search的google组上。
简而言之,我试图找出为什么在包含约1.5密耳记录的ES索引上进行搜索时无法获得最佳性能。
目前,我能够在2秒内获得大约500-1000次搜索。 我认为这应该快几个数量级。 另外,目前我不使用节俭。
这是我检查性能的方法。
使用pyes的0.19.1版本(从github尝试了稳定版本和dev版本)使用0.13.8版本的请求
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
感谢您可以提供的任何帮助,以帮助我扩大搜索范围。
谢谢!
这不仅仅是并发问题吗?
您正在按顺序执行所有查询。 因此,查询必须先完成,然后才能进行下一个查询。 如果您对服务器的RTT为1毫秒,这将限制您每秒1000个请求。
尝试并行运行脚本的几个实例,看看所获得的性能如何。
有一些严格的方法可以通过使用pyes来改善它。
这两件事带来了很多性能。 这样做的缺点是,您必须使用访问字典的方式,而不是点缀的版本(“ result.facets.attribute.term”,而必须使用“ result.facets ['attribute'] ['term']或“ result.facets.get('attribute',{})。get('term',None)”)
我是通过扩展ES类并替换“ _send_request”函数来完成此操作的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.