2016-11-11 3 views
1

Ich versuche nur, einen Index mit putMapping zu erstellen und bin ziemlich sicher, dass dies ein Syntaxproblem ist. Der elastische Client arbeitet für .index- und .search-Befehle, daher glaube ich nicht, dass das Setup dafür verantwortlich ist. Eher ist es etwas mit meinem Putmapping-Code. Irgendwelche Vorschläge würden sehr geschätzt. Eine kleine Beschreibung von dem, was ich versuche zu tun. Ich habe einen Index gesucht und festgestellt, dass dieser nicht existiert. Ich fange den Fehler und teste, ob es gleich "index_not_found_exception" ist. Wenn ja, muss ich den Index erstellen. Alles unter dem "..." befindet sich im .catch.putMapping elasticsearch index nicht gefunden Ausnahme

"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); 
    } 

Die Konsole Antwort ist unten:

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] } 

Antwort

2

Wenn der Index nicht existiert, putMapping() wird nicht helfen, müssen Sie indices.create stattdessen nennen. putMapping kann nur verwendet werden, um einen neuen Mapping-Typ zu einem bereits vorhandenen Index hinzuzufügen.

Ersetzen Sie Ihre putMapping Anruf mit diesem:

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

Nun, das in Bezug auf einen Fehler nicht zu schaffen scheint zu funktionieren, aber ich bekomme keine Antwort oder irgendetwas von dem elastischen server..I bekommen nur „nein Index "und keine Antwort, kein Fehler. – YeeP

+0

Nun, es ist nicht klar, was Sie vorher tun ... Was sehen Sie in den ES-Protokollen? – Val

+0

Val-I setzte die Logger-Ebene auf DEBUG zurück und betrachtete sie gerade, und ich sehe nur den Fehler für IndexNotFoundException [kein solcher Index], der zu diesem Zeitpunkt erwartet wird. Gibt es eine bessere Einstellung für den Logger, um weitere Informationen zu erhalten? – YeeP