返回所有结果时,Elasticsearch实际上很慢

时间:2015-08-04 14:37:48

标签: python elasticsearch elasticutils

我有一个~113000个文档的索引。我正在尝试检索所有这些,我不关心得分。基本上是一个select * from index;

我正在使用elasticutils在python中执行此操作(尚未找到时间切换到elasticsearch-dsl)

运行

S().indexes('da_userstats').query().count()  

在大约0.003秒内完成。

运行

S().indexes('da_userstats').query()[0:113595].execute().objects 

大约需要15秒。

根据我对文档的理解,两者都应该强制执行,所以我不明白为什么会有很大的时间差异。

在映射中我尝试将字段标记为不分析,但它没有效果。我真的不明白为什么会有这么多数量级的差异。

@classmethod
def get_mapping(cls):
    return {
        'properties': {
            'id': {
                'type': 'integer',
                'index': 'not_analyzed',
                "include_in_all": False,
            },
            'email': {
                'type': 'string',
                'index': 'not_analyzed',
                "include_in_all": False
            },
            'username': {
                'type': 'string',
                'index': 'not_analyzed',
                "include_in_all": False
            },
            'date_joined': {
                'type': 'string',
                'index': 'not_analyzed',
                "include_in_all": False
            },
            'last_activity': {
                'type': 'string',
                'index': 'not_analyzed',
                "include_in_all": False
            },
            'last_activity_web': {
                'type': 'string',
                'index': 'not_analyzed',
                "include_in_all": False
            },
            'last_activity_ios': {
                'type': 'string',
                'index': 'not_analyzed',
                "include_in_all": False
            },

0 个答案:

没有答案