Elasticsearch: постоянный тип поля данных - PullRequest
1 голос
/ 20 июня 2019

Есть ли способ добавить поле данных Elasticsearch в отображение индекса, чтобы оно всегда возвращало постоянное числовое значение?

Я знаю, что могу просто добавить числовой тип данных, а затем переиндексировать все с помощью константы, но я бы хотел избежать переиндексации, и я также хотел бы иметь возможность динамически изменять константу без переиндексации.


Мотивация : В нашем кластере много разных индексов. Мы регулярно ищем несколько индексов одновременно по разным причинам. Однако при поиске по нескольким индексам нашей логике поиска по-прежнему необходимо обрабатывать каждый индекс немного по-разному. Один из способов сделать это - добавить постоянное числовое поле в каждый индекс, а затем использовать это поле в нашем поисковом запросе.

Однако, поскольку это константа, похоже, что нам не нужно переиндексировать все (кажется бессмысленным добавлять константу в каждую запись).

1 Ответ

1 голос
/ 21 июня 2019

Для этой цели вы можете использовать поле _meta :

PUT index1
{
  "mappings": {
    "_meta": { 
      "constant": 1
    },
    "properties": {
      ... your fields
    }
  }
}

PUT index2
{
  "mappings": {
    "_meta": { 
      "constant": 2
    },
    "properties": {
      ... your fields
    }
  }
}

Вы можете изменить это постоянное значение в любое время без необходимости переиндексации чего-либо.Значение хранится на уровне индекса и может быть получено в любое время, просто получив отображение индекса с помощью GET index1,index2/_mapping

...