Python3使用ES常见问题记录

1.使用Elasticsearch 6.x版本以上进行查询字段排序的时候,遇到报类似如下错误:

elasticsearch.exceptions.RequestError: RequestError(400, 'search_phase_execution_exception', 'Fielddata is disabled on text fields by default. Set fielddata=true on [article_time] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.')

解决办法:

删除掉已经创建好的index,然后重新创建,例如我这使用postman来创建,需要注意的是从新创建是时候,指定要排序的字段mappings下的fielddata属性为true。例如下图所示:

Python3使用ES常见问题记录_第1张图片

创建成功后切换到GET方式请求,如过出现如下图类似的内容则表示创建成功:

Python3使用ES常见问题记录_第2张图片

接下来,再到代码中加入排序字段运行查询,就不会报错了,如下图所示:

Python3使用ES常见问题记录_第3张图片

2.根据日期字段排序的时候,发现排序不准确

解决办法:

 删除索引,从新创建,修改mappings,例如我这里将日期字段 article_time 的type设置为 date ,然后format格式设置为:"yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis 如图所示:

Python3使用ES常见问题记录_第4张图片

创建完成之后,从新将数据导入进去,这时候查询,发现排序正确了,效果图如下:

Python3使用ES常见问题记录_第5张图片 

你可能感兴趣的:(Python3使用ES常见问题记录)