2016-11-11 20 views
1

私はちょうどputMappingを使用してインデックスを作成しようとしていますが、これは構文上の問題であると確信しています。エラスティッククライアントは.indexと.searchコマンドを処理しているので、その設定が問題ではないと私は信じています。むしろ、それは私のputmappingコードで何かです。どんな提案も大歓迎です。私が何をしようとしているのかについての少しの説明。私は索引を検索し、それが存在しないことを発見しました。私はエラーをキャッチし、それが "index_not_found_exception"と等しいかどうかをテストします。もしそうなら、インデックスを作成する必要があります。 "..."の下のすべてが.catchの内側にあります。putMapping elasticsearchインデックスが見つかりません例外

"use strict"; 
let config = require("./config"), 
    soap = require("soap"), 
    elastic = require("elasticsearch").Client(config.routeHost); 
... 
if (error.body.error.type == "index_not_found_exception") { 
     console.log("no index"); 
     elastic.indices.putMapping({ 
      index: "ppvevents", 
      type: "ppvObject", 
      body: { 
       properties: { 
        name: {type: "string", index: "not_analyzed"}, 
        hdid: {type: "integer"}, 
        sdid: {type: "integer"} 
       } 
      } 
     }).then(function(response){ 
      console.log("Response: ", response); 
     }).catch(function(error){ 
      console.log("putMapping Error: ", error); 
     }); 
    } else if(error.body.error.type != "index_not_found_exception") { 
     console.log("error: elasticsearch client search"); 
     console.log(error); 
    } 

コンソール応答は以下の通りです:

vagrant at localhost in /vagrant on master! 
± node index.js 
9000 
no index 
putMapping Error: { [Error: [index_not_found_exception] no such index, with { resource.type=index_or_alias resource.id=ppvevents index=ppvevents }] 
    status: 404, 
    displayName: 'NotFound', 
    message: '[index_not_found_exception] no such index, with { resource.type=index_or_alias resource.id=ppvevents index=ppvevents }', 
    path: '/ppvevents/_mapping/ppvObject', 
    query: {}, 
    body: 
     { error: 
      { root_cause: [Object], 
       type: 'index_not_found_exception', 
       reason: 'no such index', 
       'resource.type': 'index_or_alias', 
       'resource.id': 'ppvevents', 
       index: 'ppvevents' }, 
      status: 404 }, 
     statusCode: 404, 
     response: '{"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"ppvevents","index":"ppvevents"}],"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"ppvevents","index":"ppvevents"},"status":404}', 
toString: [Function], 
toJSON: [Function] } 

答えて

2

インデックスが存在しない場合は、putMapping()があなたの代わりにindices.createを呼び出す必要があり、助けにはなりません。 putMappingは、既存のインデックスに新しいマッピングタイプを追加する場合にのみ使用できます。

これであなたputMappingの呼び出しに置き換えます

elastic.indices.createIndex({ 
     index: "ppvevents", 
     body: { 
      mappings: { 
       ppvObject: { 
        properties: { 
        name: {type: "string", index: "not_analyzed"}, 
        hdid: {type: "integer"}, 
        sdid: {type: "integer"} 
        } 
       } 
      } 
     } 
+0

まあ、エラーを作成していないという点で動作しているようだが、私はちょうどノー」を取得弾性server..Iから応答または何も何を取得していませんインデックス "と応答なし、エラーなし。 – YeeP

+0

これまでにやっていることははっきりしていません... ESログには何が表示されますか? – Val

+0

Val-私はロガーレベルをDEBUGにリセットして、今すぐ見ています。この時点で予想されるIndexNotFoundException [no such index]のエラーが表示されます。もっと詳しい情報を得るためにロガーを置く方がいいですか? – YeeP

関連する問題