我有一个~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
},