2014-09-16 2 views
0

Я использую elasticsearch 1.0.2 и используя образец динамического шаблона в своем индексе. Есть в любом случае мы можем получить имя индекса поля из части динамического поля ИмяКак создать псевдоним для динамических полей в динамических шаблонах elasticsearch?

Это мой шаблон

{"dynamic_templates":[ 
    "dyn_string_fields": { 
    "match": "dyn_string_*", 
    "match_mapping_type": "string", 
    "mapping": { 
     "type": "string", 
     "index" : "analyzed", 
     "index_name": "{name}" 
    } 
    } 
}]} 

Динамический шаблоны работы, и я могу добавить поля. Наша цель - добавить поля с префиксом «dyn_string_», но при поиске он должен быть просто именем поля без префикса «dyn_string_». Я тестировал с помощью match_mapping_type для добавления полей, но это позволит добавить любое поле. Есть ли у кого-нибудь предложения?

Я посмотрел на Elasticsearch API, и они имеют функцию преобразования в 1.3, которая позволяет изменять документ перед вставкой. (К сожалению, я не буду в состоянии обновить до этой версии.)

ответ

2

В одном шаблоне несколько псевдонимов может быть установленным. Для быстрого примера, пожалуйста, посмотрите на этот фиктивный пример:

curl -XPUT localhost:9200/_template/test_template -d ' 
{ 
    "template" : "test_*", 
    "settings" : { 
     "number_of_shards" : 4 
    }, 
    "aliases" : { 
     "name_for_alias" : {} 
    }, 
    "mappings" : { 
     "type" : { 
     "properties" : { 
      "id" : { 
      "type" : "integer", 
      "include_in_all" : false 
      }, 
      "test_user_id" : { 
      "type" : "integer", 
      "include_in_all" : false 
      } 
     } 
     } 
    } 
} 
' 

Там «name_for_alias» это ты просто псевдоним. В качестве параметра могут быть заданы предустановленные фильтры, если вы хотите использовать псевдоним для фильтрации данных.

Дополнительную информацию можно найти здесь: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html