Попытка загрузить json документов вasticsearch - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь следовать этому ответу , но я получаю ошибку в параметре действий массового метода. Я могу использовать next для генерации массива json объектов, но когда я передаю его helpers.bulk, я получаю ошибку.

Это мой код:

from elasticsearch import Elasticsearch, helpers
import sys, json
import os

es = Elasticsearch("localhost:9200")
filename = "path_to_file.json"
def load_json(filename):
#     " Use a generator, no need to load all in memory"
print(filename)
with open(filename,'r') as open_file:
    yield json.load(open_file)`

helpers.bulk(es, load_json(filename), index='cllimaster_test', doc_type='clli_data_test')

Ошибка :

enter image description here

1 Ответ

1 голос
/ 08 апреля 2020

Эта ошибка python (не ES) возникнет, если .pop() был вызван на list вместо dict. Я не видел ваш файл json, но вот код с надписью, который отлично работает:

from elasticsearch import Elasticsearch, helpers
import sys
import json
import os

es = Elasticsearch("localhost:9200")
filename = "path_to_file.json"


def load_json(filename):
    with open(filename, 'r') as open_file:
        yield json.load(open_file)


helpers.bulk(es, load_json(filename), index='cllimaster_test',
             doc_type='clli_data_test')

print(es.count(index='cllimaster_test'))

...