2016-04-21 4 views
0

Ich habe einen Index in Elasticsearch mit den folgenden Einstellungen erstellt:„MapperParsingException [Analyzer [Sekunde] nicht für Feld gefunden [Name]]“

{ 
    "my_index" : { 
    "aliases" : { }, 
    "mappings" : { }, 
    "settings" : { 
     "index" : { 
     "creation_date" : "1461229073677", 
     "uuid" : "7-TECarfRs6XO8yZE7SeWA", 
     "number_of_replicas" : "1", 
     "number_of_shards" : "5", 
     "version" : { 
      "created" : "1040599" 
     }, 
     "settings" : { 
      "analysis" : { 
      "analyzer" : { 
       "second" : { 
       "type" : "custom", 
       "filter" : [ "lowercase", "synonym" ], 
       "tokenizer" : "standard" 
       } 
      }, 
      "filter" : { 
       "synonym" : { 
       "type" : "synonym", 
       "synonyms" : [ "i pad => ipad", "smart phone => smartphone" ] 
       } 
      } 
      } 
     } 
     } 
    }, 
    "warmers" : { } 
    } 
} 

Nun, was ich versuche zu tun ist, um die Zuordnungen festgelegt mit dem folgenden Code:

PutMapping putMapping = new PutMapping.Builder(
     "my_index", 
     "my_index_type", 
     "{ \"properties\" : { \"Name\" : {\"type\" : \"string\", \"analyzer\" : \"second\"} } }" 
).build(); 


JestResult result = client.execute(createIndex); 
result = client.execute(putMapping); 

EDIT

Der Code, den ich mit m den Index zu erstellen ist:

CreateIndex createIndex = new CreateIndex.Builder(indexName) 
.settings( 
     ImmutableSettings.builder() 
       .loadFromClasspath(
         "settings.json" 
       ).build().getAsMap() 
).build(); 
JestResult result = client.execute(createIndex); 

und die settings.json sieht wie folgt aus:

{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "second": { 
      "type": "custom", 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "synonym" 
      ] 
     } 
     }, 
     "filter": { 
     "synonym" : { 
      "type" : "synonym", 
      "synonyms" : [ 
       "i pad => ipad", 
       "smart phone => smartphone", 
       "i phone => iphone" 
       ]    
        } 
       } 
     } 

    } 
} 

aber ich folgende Fehlermeldung erhalte:

"MapperParsingException[Analyzer [second] not found for field [message]]" 

Ich kann die Zuordnung setzen, wenn ich den „Analysator entfernen ". So scheint es, dass ich zweimal den "Einstellungen" Abschnitt habe, aber egal wie ich die "settings.json" Datei strukturiere, bekomme ich diese zwei Abschnitte. Ich habe mir die auf der JEST-Seite angegebenen Beispiele angeschaut, aber das hat mir nicht geholfen. https://github.com/searchbox-io/Jest/blob/master/jest/README.md

Irgendwelche Ideen Leute?

Antwort

2

Die Einstellungen Sie verwenden sind nicht richtig definiert, dh Sie zwei geschuppten settings Abschnitte haben, sollten die Index-Einstellungen wie diese stattdessen aussehen:

{ 
    "my_index": { 
    "aliases": {}, 
    "mappings": {}, 
    "settings": { 
     "index": { 
     "number_of_replicas": "1", 
     "number_of_shards": "5" 
     }, 
     "analysis": { 
     "analyzer": { 
      "second": { 
      "type": "custom", 
      "filter": [ 
       "lowercase", 
       "synonym" 
      ], 
      "tokenizer": "standard" 
      } 
     }, 
     "filter": { 
      "synonym": { 
      "type": "synonym", 
      "synonyms": [ 
       "i pad => ipad", 
       "smart phone => smartphone" 
      ] 
      } 
     } 
     } 
    }, 
    "warmers": {} 
    } 
} 

UPDATE

Ihre settings.json Datei einfach muss Folgendes enthalten:

{ 
    "analysis": { 
    "analyzer": { 
     "second": { 
     "type": "custom", 
     "filter": [ 
      "lowercase", 
      "synonym" 
     ], 
     "tokenizer": "standard" 
     } 
    }, 
    "filter": { 
     "synonym": { 
     "type": "synonym", 
     "synonyms": [ 
      "i pad => ipad", 
      "smart phone => smartphone" 
     ] 
     } 
    } 
    } 
} 
+0

Ja, Sie haben Recht. Ich bin in der Lage, meinen Index mit einem "Einstellungen" Abschnitt zu erstellen, indem ich CURL verwende. Aber wenn ich die JEST-Bibliothek benutze, lande ich immer mit zwei. Ich habe meine Frage bearbeitet, damit Sie die "settings.json" sehen können, die ich benutze. Könnten Sie bitte einen Blick darauf werfen und lassen Sie es mich wissen, wenn es anders strukturiert werden muss? – panipsilos

+0

Ich habe meine Antwort aktualisiert – Val

+0

Thnx, es hat funktioniert! Ich habe das schon mal ausprobiert (den Abschnitt "Einstellungen" entfernt), aber das eigentliche Problem war, dass Eclipse die "settings.json" nicht aktualisiert hat und ich immer dieselbe Struktur bekommen habe (mit dem doppelten Abschnitt "settings"). Ich brauchte eine Weile, um es herauszufinden und viel Frustration. Ich aktualisiere jetzt jedes Mal, wenn ich die settings.json ändere, das Projekt, damit Eclipse die frisch geänderte Datei lädt. Prost, und thnx für Ihre Hilfe – panipsilos

Verwandte Themen