*** KeyError: '_scroll_id' при получении пакета информации в эластичном - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть профиль с 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?

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