hmlhmz  
                
               
                 
                 
              
                  
                    December 23, 2018,  6:27pm
                   
                   
              1 
               
             
            
              
添付のようなcsvをjson形式に変換してElasticsearchにアップロードしたいと思っています。A列に日時、B~C列にサーバ名があり、時間毎の値(ここでは例としてCPU使用率)が記載されています。
以下のようなコードでindexを作成し、作成後、mapping情報を変更しようとしたところエラーが出ます。原因と対処法を教えていただけませんでしょうか?
import csv 
import json 
import pandas as pd 
from datetime import datetime as dt 
import elasticsearch 
from elasticsearch import helpers
csvfile = "sample.csv" 
df_csv = pd.read_csv(csvfile, encoding = "SHIFT-JIS") 
json_str = df_csv.to_json(orient = 'records') 
json_objs = json.loads(json_str) 
url = "http://localhost:9200 " 
es = elasticsearch.Elasticsearch(url)
index作成 
for json_obj in json_objs: 
mybody = json_obj 
es.index(index = myindex, doc_type = "collected_data", body = mybody)
上記はエラーは出ずに正常に処理されます。(Elasticsearchへ登録されたデータがkibana側で確認できる) 
しかし、以下を実行すると、下記「■エラーメッセージ」のようなメッセージが出てしまいます。やりたい事はpythonのコードから日時(DateTime)をDate情報として認識させたい事です。今文字列としてkibanaが認識してしまってます。 
mapping = { 
"properties": { 
"DateTime": { 
"type": "date", 
"format":"yyyy-MM-dd HH:mm:ss" 
} 
} 
}
es.indices.put_mapping(index = myindex, doc_type = "collected_data", body = mapping)
■エラーメッセージ 
RequestError: RequestError(400, 'mapper_parsing_exception', 'Root mapping definition has unsupported parameters: 
[mapping : {collected_data={properties={DateTime={type=date, format=yyyy-MM-dd HH:mm:ss}}}}]')
             
            
               
               
               
            
            
           
          
            
              
                tsgkdt  
                (tsgkdt)
               
              
                  
                    December 23, 2018, 11:13pm
                   
                   
              2 
               
             
            
              こんにちわ
手元の環境(Es6.5.4)では、状況が再現しないため 
今回は、マッピングが作成できない、ということですので、問題の切り分けのためにも、 
データ投入をせずに、indexの作成とマッピングの作成だけをやってみてはいかがでしょう?
具体的にいうと、データ投入によってindexとmappingを暗黙的に作成するのではなく、 
明示的にcreateとput_mappingしてみてはどうでしょうか。
手元の環境では以下でマッピングが期待通り作成されています。
# マッピング定義
mapping = {
    "properties": {
        "DateAndTime": {
            "type": "date",
            "format":"yyyy-MM-dd HH:mm:ss"
        }
    }
}
myindex = 'forum1224'
# indexの作成
es.indices.create(index=myindex)
# マッピングの作成
es.indices.put_mapping(index=myindex, doc_type='collected_data', body=mapping)
 
期待通りにmappingが作成できてから、実際にデータを入れる(es.index(..))していく方が良いと思います。
mappingの定義自体が正しいかを確認するのであれば、KibanaのDevToolsも使えます。
PUT forum1224
PUT forum1224/_mapping/collected_data
{
  "properties": {
    "DateAndTime": {
      "type": "date",
      "format": "yyyy-MM-dd HH:mm:ss"
    }
  }
}
 
最後に、お使いのElasticsearchやelasticsearch-pyのバージョンなど添えていただければ、他の方の回答をしやすいかと思います。 
よろしくお願いします。
             
            
               
               
               
            
            
           
          
            
              
                hmlhmz  
                
               
              
                  
                    December 24, 2018,  1:58am
                   
                   
              3 
               
             
            
              早々のお返事ありがとうございました。 
お陰様で無事データの投入ができました。 
先にindexやmappingを定義してしまえば良かったんですね。
Elasticsearchのバージョンや環境の記載が無く、失礼いたしました。 
こちらの環境は以下です。 
・elasticsearch 6.5.3 
・kibana 6.5.3 
・Windows 10 
・Python 3.6.5(Anaconda)
             
            
               
               
               
            
            
           
          
            
              
                tsgkdt  
                (tsgkdt)
               
              
                  
                    December 24, 2018,  1:13pm
                   
                   
              4 
               
             
            
              参考までにですが、6.5.4ではKibanaとbeatsで「a couple of notable issues」とされる修正が入ってますので、 
検証環境かもしれませんが、最新をお使いいただくと良いように思います。 
躓いたところが既知の不具合だったりすると、時間がもったいないですしね。
             
            
               
               
               
            
            
           
          
            
              
                hmlhmz  
                
               
              
                  
                    December 24, 2018, 11:02pm
                   
                   
              5 
               
             
            
              tsgkdtさん 
ご返信ありがとうございます。 
追加の情報、ありがとうございます。 
後日教えて頂いたバージョンへ移行しようと思います。
             
            
               
               
               
            
            
           
          
            
              
                system  
                (system)
                  Closed 
               
              
                  
                    January 21, 2019, 11:02pm
                   
                   
              6 
               
             
            
              This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.