У меня есть профиль с 4 значениями [имя, местоположение, ID, возраст] в моем эластичном файле. У меня в профиле 10008315 профилей, и я пытаюсь извлечь идентификаторы каждого сотрудника.
Первоначально я пробовал это с помощью запроса POST с использованием почтальона, мой первоначальный запрос был
URL = http://mylinkaddress/profilesinfo/_search
'{"query":{"bool":{"must":[{}]}},"size":10008315,"_source":["CurrentID"]}'
он вернул ошибку, размер пакета слишком велик, а максимальный лимит составляет 10000. Поэтому я обновил поиск с помощью прокрутки
URL = http://mylinkaddress/profilesinfo/_search/scroll=5m
'{"query":{"bool":{"must":[{}]}},"size":1000,"_source":["CurrentID"]}'
Я получил требуемый вывод из первой 1000, а на выходе я получил идентификатор прокрутки
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBgAAAAAgynK6FjZDQk1OY2lXUXJtMmFlMjR5bkJ2SlEAAAAAIS0v_hZPY1c5Y2FLSlRzQ0NzLUF4eXhSOTJBAAAAACDt7CYWMFpQdDJNakpReGlrM1dpcHY5cGROUQAAAAAhZCSPFlJ5akw0bDdHU29DNWdJajBURmYtTUEAAAAAHxCQwRY1aGZabmRSVFFtV2xtSFJCejFwRFFRAAAAACNUawEWTUJwYjF4cVVRV1dYQ2JFLVNzMlgtZw==",
"took": 484,
"timed_out": false,
"_shards": {
"total": 6,
"successful": 6,
"failed": 0
},
"hits": {
"total": .....
Я использовал идентификатор прокрутки и снова запустил POST, чтобы получить следующий пакет из 1000 выходов.
{
"scroll" : "1m",
"scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBgAAAAAgynK6FjZDQk1OY2lXUXJtMmFlMjR5bkJ2SlEAAAAAIS0v_hZPY1c5Y2FLSlRzQ0NzLUF4eXhSOTJBAAAAACDt7CYWMFpQdDJNakpReGlrM1dpcHY5cGROUQAAAAAhZCSPFlJ5akw0bDdHU29DNWdJajBURmYtTUEAAAAAHxCQwRY1aGZabmRSVFFtV2xtSFJCejFwRFFRAAAAACNUawEWTUJwYjF4cVVRV1dYQ2JFLVNzMlgtZw=="
}
Я пытался сделать это вручную, и я хочу реализовать это в своем коде Python.
SEARCH_URL = "http://mylinkaddress/profilesinfo/_search/scroll=5m"
query = '{"query":{"bool":{"must":[{}]}},"size":1000,"_source":["CurrentID"]}'
response = requests.post(MSEARCH_URL, query, headers=HEADERS)
json_data = response.json()
print(json_data["_scroll_id"])
Я получаю ошибку
*** KeyError: '_scroll_id'
потому что мой вывод JSON, программно в моем json нет scroll_id, он начинается с 'hit', как показано ниже
{u'hits': {u'hits': [{u'_score': 1.0, u'_type': u'profile', u'_id': u'674860fc-6060-411e-9565-e9914c33c0ca', u'_source': {u'CurrentCompany': u'Battelle'}, u'_index'............
Почему вывод в POSTMAN отличается от того, что я пробовал с кодом Python. Я хочу сделать это программно, какова процедура получения следующего пакета информации, если я не могу получить scroll_id в JSON?