asticsearch.scroll () показывает хиты, но возвращает пустой результат, если они были возвращены scroll - PullRequest
1 голос
/ 03 мая 2019

Я работаю с эластичной базой данных и хочу возвращать результаты один за другим, используя scroll(), что требует от меня получения scroll_id с использованием метода search().

Размер результата может варьироваться от 0 до 40000, поэтому я не могу использовать search() для всего этого.

Я не заметил проблемы, когда было большое числохитов, но когда есть только одно попадание, свиток ничего не возвращает.

query = {"query":{"match":{"message": "Techtotic"}}, "sort": [{"@timestamp":"asc"}]}

scrollid = es.search(index="ts-shanks*", size=2, scroll="50m", body=query)

hits = scrollid["hits"]["total"]

scrollid = scrollid["_scroll_id"]

for i in range(hits):

    entry = es.scroll(scroll_id=scrollid, scroll="1m", filter_path=req_data)

    try:
        print(entry["hits"]["hits"][0]["_source"]["message"])

    except Exception:
        print(json.dumps(entry, indent=4))

В выводе отображается совпадение попадания в распечатке, соответствующее запросу '' 'search ()' '', ноне в том, что с scroll().

Кроме того, независимо от того, сколько обращений мы получаем, последний результат прокрутки всегда запускает блок исключения, потому что он пуст.

Я слышал, что search_type="scan" исправит это, но кажется, что оно устарело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...