Я хочу проиндексировать поле month
записи bibtex в elasticsearch и сделать его доступным для поиска с помощью запроса range
. Это требует, чтобы базовый тип поля был каким-то числовым типом данных. В моем случае short
было бы достаточно.
Поле bibtex month
в его канонической форме требует трехсимвольной аббревиатуры, поэтому я попытался использовать char_filter
следующим образом:
...
"char_filter": {
"month_char_filter": {
"type": "mapping",
"mappings": [
"jan => 1",
"feb => 2",
"mar => 3",
...
"nov => 11",
"dec => 12"
]
}
...
"normalizer": {
"month_normalizer": {
"type": "custom",
"char_filter": [ "month_char_filter" ],
},
И поставить сопоставления следующим образом:
...
"month": {
"type": "short",
"normalizer": "month_normalizer"
},
...
Но, похоже, это не работает, так как поле type
не поддерживает подобные нормализаторы, а также не поддерживает анализаторы.
Итак, каков подход к реализации такого сопоставления, как показано в части char_filter
, чтобы были возможности запроса диапазона?