2016-04-08 10 views
0

Ich folge diesem Blog, um Autocomplete-Funktion zu implementieren. Ich habe versucht, das genaue Mapping zu erstellen, bin aber auf einen Fehler gestoßen.Elasticsearch erstellen Zuordnungsproblem

Folgendes ist meine beabsichtigte Mapping-Abfrage.

curl -XPUT "http://localhost:9200/blurays " -d' 
{ 
    "settings": { 
     "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": { 
     "movies": { 
     "_all": { 
      "index_analyzer": "nGram_analyzer", 
      "search_analyzer": "whitespace_analyzer" 
     }, 
     "properties": { 
      "addToCartUrl": { 
       "type": "string", 
       "index": "no", 
       "include_in_all": false 
      }, 
      "format": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "mpaaRating": { 
       "type": "string", 
       "index": "not_analyzed", 
       "include_in_all": false 
      }, 
      "price": { 
       "type": "double", 
       "include_in_all": false 
      } 
     } 
     } 
    } 
}' 

Es folgt der Fehler, die ich erhalte: -

analyzer on field [_all] must be set when search_analyzer is set 

Ich verwende die neueste Version des ES, dh 2.3 und dies wurde wieder 2 Jahre geschrieben. Ich habe gerade angefangen ES zu lernen. Was kann die mögliche Lösung dafür sein?

Antwort

4

Wenn Sie das Feld _all definieren, müssen Sie index_analyzer durch analyzer ersetzen, da dies renamed in 2.0 ist.

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

Einverstanden, die Fehlermeldung könnte jedoch besser sein.

+0

Jede Abbildung von '1.x' zu' 2.x' kommen sollte 'index_analyzer' geprüft werden. – Yuri