2017-05-15 14 views
0

나는 merged_file 1.json, merged_file 2. json 등으로 이름이 지정된 많은 JSON 파일 (100)을 가지고있다.색인 elastic search에서 JSON 파일은 파이썬을 사용하고 있습니까?

어떻게 파이썬 (elasticsearch_dsl)을 사용하여 elasticsearch로 이러한 모든 파일을 색인화합니까?

은이 코드를 사용하고 있지만, 작동하지 않는 것 :

from elasticsearch_dsl import Elasticsearch 
import json 
import os 
import sys 

es = Elasticsearch() 

json_docs =[] 

directory = sys.argv[1] 

for filename in os.listdir(directory): 
    if filename.endswith('.json'): 
     with open(filename,'r') as open_file: 
      json_docs.append(json.load(open_file)) 

es.bulk("index_name", "type_name", json_docs) 

json으로는 다음과 같습니다

{"one":["some data"],"two":["some other data"],"three":["other data"]} 

나는 이것이 올바른 만들기 위해 무엇을 할 수 있는가?

from elasticsearch import Elasticsearch, helpers 
import sys, json 

es = Elasticsearch() 

def load_json(directory): 
    " Use a generator, no need to load all in memory" 
    for filename in os.listdir(directory): 
     if filename.endswith('.json'): 
      with open(filename,'r') as open_file: 
       yield json.load(open_file) 

helpers.bulk(es, load_json(sys.argv[1]), index='my-index', doc_type='my-type') 
+0

당신이 jsondocs의 모습을 어떻게 보여줄 수 : 사용 당신이해야이 작업 elasticsearch-py (pip install elasticsearch)에 대한 –

+0

각 문서 앞에 명령 줄이 없습니다. 자세한 내용은 [여기] (https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-bulk)를 참조하십시오. – Val

+0

@BhargaviSri - 추가됨 – anshaj

답변

1

?
+0

색인이 생성 된 jsons의 ID를 얻으려면 어떻게해야합니까? – anshaj

+0

아이디에 관심이 있다면 (elasticsearch는 무작위로 생성 할 것입니다.) json에 직접'_id' 필드를 넣거나 직접 파일 이름을 넣거나 –