3

S3ディレクトリからAmazon ElasticSearchサービスにデータをコピーしたいと思います。私はguideに従ってみましたが、残念ながら私が探している部分はありません。私はラムダ関数そのものがどのように見えるかは分かりません(そしてガイドのこの情報はすべて "あなたのアプリケーションのソースコードをeslambdaフォルダに置きます")。私はESにファイルを自動索引付けさせたい。Amazon AWS-S3 to ElasticSearch(Python Lambda)

現在、私は

for record in event['Records']: 
    bucket = record['s3']['bucket']['name'] 
    key = urllib.unquote_plus(record['s3']['object']['key']) 
    index_name = event.get('index_name', key.split('/')[0]) 
    object = s3_client.Object(bucket, key) 

    data = object.get()['Body'].read() 

    helpers.bulk(es, data, chunk_size=100) 

をしようとしている。しかし、私のデータはS3から移動しますように、誰もが、私は物事を設定することができますどのように、私に説明してもらえます私は elasticsearch.exceptions.RequestError: TransportError(400, u'action_request_validation_exception', u'Validation Failed: 1: index is missing;2: type is missing;3: index is missing;4: type is missing;5: index is missing;6: type is missing;7: ...

を述べ、大規模なエラーのように取得しますESに自動マッピングされ、自動索引付けされますか?明らかに参照番号herehereで言及されているように可能です。

答えて

0

マッピングはElasticsearchで自動的に割り当てられますが、インデックスは自動的に生成されません。 POST要求では、インデックス名とタイプを指定する必要があります。そのインデックスが存在しない場合、Elasticsearchは自動的にインデックスを作成します。

あなたのエラーに基づいて、インデックスとタイプを通過していないようです。

たとえば、インデックスMyIndexにレコードを追加する単純なPOSTリクエストでは、最初にインデックスを作成し、すでに存在しない場合はタイプするMyTypeと入力します。

curl -XPOST 'example.com:9200/MyIndex/MyType/' \ 
    -d '{"name":"john", "tags" : ["red", "blue"]}' 
関連する問題