2016-06-20 2 views
0

создать индекс, как это с помощью PUT http://localhost:9200/test:ElasticSearch не может найти анализатор в поле?

{ 
    "settings": { 
    "number_of_shards": 1, 
    "analysis": { 
     "analyzer": { 
     "sortable": { 
      "type": "custom", 
      "tokenizer": "keyword", 
      "filter": [ 
      "lowercase" 
      ] 
     } 
     } 
    } 
    }, 
    "mappings": { 
    } 
} 

Это возвращенное:

{"acknowledged":true} 

Затем убедитесь, что анализатор есть: http://localhost:9200/test/_analyze?_analyzer=sortable&text=HeLLo

{"tokens":[{"token":"hello","start_offset":0,"end_offset":5,"type":"<ALPHANUM>","position":0}]} 

Я создайте для него сопоставления: By PUT http://localhost:9200/test/_mapping/company

{ 
    "properties": { 
    "name": { 
     "type": "string", 
     "analyzer": "standard", 
     "fields": { 
     "raw": { 
      "type": { 
      "analyzer": "sortable" 
      } 
     } 
     } 
    } 
} 

Это возвращает:

{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"no handler for type [{analyzer=sortable}] declared on field [raw]"}],"type":"mapper_parsing_exception","reason":"no handler for type [{analyzer=sortable}] declared on field [raw]"},"status":400} 

Что не так?

ответ

1

Ваше company отображение должно быть исправлено к этому:

{ 
    "properties": { 
    "name": { 
     "type": "string", 
     "analyzer": "standard", 
     "fields": { 
     "raw": { 
      "type": "string", 
      "analyzer": "sortable" 
     } 
     } 
    } 
}