前提・実現したいこと
pandasデータフレームをElasticSearchに登録したいのですが下記のエラーが出ます。
データフレームにNanが入っているから出るものでしょうか。
AWS lambdaから実行しています。
どなたか知識ある方、教えていただけると幸いです。
発生している問題・エラーメッセージ
"{\"errorMessage\": \"('500 document(s) failed to index.', [{'index': {'_index': 'book', '_type': '_doc', '_id': 'S100JM3Z', 'status': 400, 'error': {'type': 'mapper_parsing_exception', 'reason': 'failed to parse', 'caused_by': {'type': 'json_parse_exception', 'reason': \\"Non-standard token 'NaN': enable JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS to allow\\n at [Source: (org.elasticsearch.common.bytes.AbstractBytesReference$MarkSupportingStreamInputWrapper); line: 1, column: 1240]\\"}}
該当のソースコード
lambda_handlerを動かしています。
import json from elasticsearch import Elasticsearch import boto3 import pandas as pd import io from elasticsearch import helpers def doc_generator(index_name, df): docs = [row[1].to_dict() for row in df.iterrows()] for doc in docs: yield { "_index": index_name, "_id": doc["ID"], "_source": doc } def lambda_handler(event, context): # TODO implement index_name = "book" df=get_olddata()#pandasデータフレームの取得 es = Elasticsearch("hostname") helpers.bulk(es, doc_generator(index_name, df)) }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー