首页 > 解决方案 > Elasticsearch 不会更新结果

问题描述

我正在使用 Elasticsearch 6.6.0 和 elasticsearch-py 6.3.0。我将一些数据放入 Elasticsearch,然后使用这个小函数返回 Elasticsearch 中特定变量的所有值的列表:

from elasticsearch import Elasticsearch
es = Elasticsearch
def get_prior_records():
    records = es.search(
        index="my_index",
        body={"query": {"match_all": {}}, "_source": ["var_i_want"]})
    return [item["_source"]["var_i_want"] for item in records["hits"]["hits"]]

我第一次运行这个函数时,它运行良好并返回var_i_want数据库中所有实例的列表。但是,当我向数据库添加更多数据(并通过 Kibana 确认数据存在)时,该函数会不断将原始列表返回给我。我无法获得包含我的新数据的列表。

我究竟做错了什么?为什么我的搜索不会更新其结果?

标签: elasticsearchelasticsearch-py

解决方案


可能的原因是您没有分页

搜索命中的默认大小由搜索请求正文中提供的“size”属性控制,默认为 10。

如果您想获取下一页结果,请使用查询 api 中的 size 和 from 属性来请求。


推荐阅读