Elasticsearch, как указать массив ключевых слов с индексом false в отображении? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь указать массив полей «ключевое слово» в сопоставлении Elasticsearch с индексом: «false», так как в соответствии с документами ES нет типа «Массив», поэтому я подумывал об использовании приведенного ниже сопоставления

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "arr_field": {
          "type":   "keyword", "index": false
        }
      }
    }
  }
}

Это правильный путь или нет?

1 Ответ

0 голосов
/ 04 февраля 2019

Да, такого конкретного типа данных для массива нет.Если вы хотите иметь поле, в котором хранится массив целых чисел, все, что вам нужно, это определить поле как тип integer, и при индексации всегда проверяйте, является ли значение для этого поля массивом, даже если оно одно.

Например:

PUT test
{
  "mappings": {
    "_doc": {
      "properties": {
        "intArray": {
          "type": "integer"
        }
      }
    }
  }
}

PUT test/_doc/1
{
   "intArray": [10, 12, 50]
}

PUT test/_doc/1
{
   "intArray": [7]
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...