Я пытаюсь определить динамические шаблоны в Elastic Search, чтобы автоматически устанавливать анализаторы для не определенных в настоящее время свойств для переводов.
Например. Следующее делает именно то, что я хочу, а именно установить lang.en.title для использования анализатора английского языка:
PUT /cl
{
"mappings" : {
"titles" : {
"properties" : {
"id" : {
"type" : "integer",
"index" : "not_analyzed"
},
"lang" : {
"type" : "object",
"properties" : {
"en" : {
"type" : "object",
"properties" : {
"title" : {
"type" : "string",
"index" : "analyzed",
"analyzer" : "english"
}
}
}
}
}
}
}
}
}
Что связано с lang.en.title, как и ожидалось, например.
GET /cl/_analyze?field=lang.en.title&text=knocked
{
"tokens": [
{
"token": "knock",
"start_offset": 0,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
}
]
}
Но то, что я пытаюсь сделать, это установить все будущие строковые свойства lang.en для использования анализатора английского языка с использованием динамического шаблона, который, похоже, не работает...
PUT /cl
{
"mappings" : {
"titles" : {
"dynamic_templates" : [{
"lang_en" : {
"path_match" : "lang.en.*",
"mapping" : {
"type" : "string",
"index" : "analyzed",
"analyzer" : "english"
}
}
}],`enter code here`
"properties" : {
"id" : {
"type" : "integer",
"index" : "not_analyzed"
},
"lang" : {
"type" : "object"
}
}
}
}
}
Английский анализатор не применяется, так как lang.en.title имеет неправильную основу -
GET /cl/_analyze?field=lang.en.title&text=knocked
{
"tokens": [
{
"token": "knocked",
"start_offset": 0,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
}
]
}
Что мне не хватает? :)