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), функция продолжает возвращать мне исходный список. Я не могу получить список, содержащий мои новые данные.

Что я делаю не так? Почему результаты моего поиска не обновляются?


person aubaub    schedule 13.02.2019    source источник


Ответы (1)


Вероятная причина в том, что вы не выполняете пейджинг.

размер результатов поиска по умолчанию регулируется по атрибуту «размер», указанному в тексте поискового запроса, и по умолчанию равен 10.

Если вы хотите получить следующую страницу результатов, запросите это, используя размер и атрибуты в запросе API.

person Shailesh Pratapwar    schedule 13.02.2019
comment
Да, исходный список, который я добавил, состоял из 10 элементов, и поэтому он продолжал возвращать те же самые 10 элементов. Добавление аргумента size исправило это. Спасибо за помощь! - person aubaub; 13.02.2019