2016-01-03 5 views
6

Problem: Ich habe Mapping erstellt und seine adaequat in Elasticsearch 1.7.1 aber nach der Aktualisierung es zu 2.1.1 gibt mir Ausnahmemapper_parsing_exception in neue Elasticsearch 2.1.1 Version

AUSNAHME

response: '{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason" 
:"analyzer on field [_all] must be set when search_analyzer is set"}],"type":"ma 
pper_parsing_exception","reason":"Failed to parse mapping [movie]: analyzer on f 
ield [_all] must be set when search_analyzer is set","caused_by":{"type":"mapper 
_parsing_exception","reason":"analyzer on field [_all] must be set when search_a 
nalyzer is set"}},"status":400}', 
    toString: [Function], 
    toJSON: [Function] } 

{ 
    "settings": { 
     "number_of_shards": 1, 
     "number_of_replicas": 0, 
     "analysis": { 
      "filter": { 
       "nGram_filter": { 
        "type": "nGram", 
        "min_gram": 2, 
        "max_gram": 20, 
        "token_chars": [ 
         "letter", 
         "digit", 
         "punctuation", 
         "symbol" 
        ] 
       } 
      }, 
      "analyzer": { 
       "nGram_analyzer": { 
        "type": "custom", 
        "tokenizer": "whitespace", 
        "filter": [ 
         "lowercase", 
         "asciifolding", 
         "nGram_filter" 
        ] 
       }, 
       "whitespace_analyzer": { 
        "type": "custom", 
        "tokenizer": "whitespace", 
        "filter": [ 
         "lowercase", 
         "asciifolding" 
        ] 
       } 
      } 
     } 
    }, 
    "mappings": { 
     "movie": { 
      "_all": { 
       "index_analyzer": "nGram_analyzer", 
       "search_analyzer": "whitespace_analyzer" 
      }, 
      "properties": { 
       "movieName": { 
        "type": "string", 
        "index": "not_analyzed" 
       }, 
       "movieYear": { 
        "type": "double" 
       }, 
       "imageUrl": { 
        "type": "string" 
       }, 
       "genre": { 
        "type": "string" 
       }, 
       "director": { 
        "type": "string" 
       }, 
       "producer": { 
        "type": "string" 
       }, 
       "cast": { 
        "type": "String" 
       }, 
       "writer": { 
        "type": "string" 
       }, 
       "synopsis": { 
        "type": "string" 
       }, 
       "rating": { 
        "type": "double" 
       }, 
       "price": { 
        "type": "double" 
       }, 
       "format": { 
        "type": "string" 
       }, 
       "offer": { 
        "type": "double" 
       }, 
       "offerString": { 
        "type": "string" 
       }, 
       "language": { 
        "type": "string" 
       } 
      } 
     } 
    } 
} 

Antwort

11

Der Fehler ist ziemlich klar, wenn Sie mich fragen, müssen Sie analyzer für _all in Ihrem Film Mapping angeben. Die Einstellung index_analyzer wurde in Elasticsearch 2.0 entfernt.

 "_all": { 
      "analyzer": "nGram_analyzer", 
      "search_analyzer": "whitespace_analyzer" 
     }, 
+0

dann was ist index_analyzer? Können Sie mir bitte sagen –

+1

In Elasticsearch vor 2.0 können Sie 'index_analyzer',' search_analyzer' oder einfach 'analyzer' setzen. Die letzte war eine Abkürzung für die Einstellung von "index_analyzer" und "search_analyzer" auf denselben Wert. In Elasticsearch 2.0 haben sie es so geändert, dass 'index_analyzer' jetzt nur' analyzer' ist und wenn Sie keinen separaten 'search_analyzer' setzen, wird auch der Wert aus' analyzer' verwendet. –

Verwandte Themen