2015-09-06 3 views
2

Допустим, у меня есть этот шаблонElasticSearch - создать шаблон для соответствия объекту по шаблону имени объекта?

{ 
    "template" : "te*", 
    "settings" : { 
     "number_of_shards" : 1 
    }, 
    "mappings" : { 
     "type1" : { 
      properties":{"TemplateField":{"enabled": false },.... } 
     } 
    } 
} 

Это соответствует индексы, которые соответствуют шаблону Te *.

Я хочу внутри Indice, чтобы соответствовать только тип объекта, который там зовут eqaul к TypeA, TypeB, TypeF

то, что будет выглядеть

{ 
    "template" : "te*", 
    "settings" : { 
     "number_of_shards" : 1 
    }, 
    "mappings" : { 
     "typeA, TypeB, TypeC" : { 
       properties":{"TemplateField":{"enabled": false },.... } 
     } 
    } 
} 

ответ

2

Это будет выглядеть следующим образом:

{ 
    "template" : "te*", 
    "settings" : { 
     "number_of_shards" : 1 
    }, 
    "mappings" : { 
     "typeA" : { 
      "properties":{"TemplateField":{"enabled": false } } 
     }, 
     "TypeB" : { 
      "properties":{"TemplateField":{"enabled": false } } 
     }, 
     "TypeC" : { 
      "properties":{"TemplateField":{"enabled": false } } 
     } 
    } 
} 
+0

Спасибо. Есть ли способ повторить шаблон (если у меня есть несколько полей в свойствах)? – Jeb

+1

Для части, разделяемой всеми типами индекса, вы можете использовать [default] (https://www.elastic.co/guide/en/elasticsearch/guide/current/default-mapping.html) отображение, иначе единственный способ чтобы повторить тип, это иметь петлю в приложении, которое генерирует шаблон (ваше клиентское приложение). Механизм наложения макроса или типа не встроен в elasticsearch. Кстати, ознакомьтесь с https://www.elastic.co/blog/great-mapping-refactoring, прежде чем вкладывать слишком много в сложную структуру типа. – imotov

+0

Спасибо. Кстати: он говорит: «Мы только применяем новые правила при создании новых индексов в Elasticsearch v2.0». ES в настоящее время v1.7.1. Что это значит? – Jeb