сопоставление elasticsearch для ключевых слов

Я хочу индексировать ключевые слова документа как тип данных массива, а не строку, что-то вроде: keywords:['key1', 'key2',...] и из документации elasticsearch вы можете иметь поле ключевых слов в виде строки:

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "tags": {
          "type":  "keyword"
        }
      }
    }
  }
}

Что я должен делать?


person Saro    schedule 21.05.2018    source источник
comment
по какой причине вы используете здесь ключевое слово вместо строки?   -  person deerawan    schedule 22.05.2018
comment
каждый документ имеет от 4 до 8 ключевых слов, чтобы сопоставить их как строку, у меня есть 2 варианта: сначала упаковать их вместе (что-то вроде key1||key2||key3||..., что неэффективно для поискового запроса (или по крайней мере, я так думаю) и второй способ - иметь 8 текстовых полей как key1, key2, key3... что также неэффективно, так как у меня 4 миллиона документов, и их будет больше, как вы думаете ?   -  person Saro    schedule 22.05.2018
comment
позвольте мне добавить, что я в порядке с key1||key2||key3||... если каким-то образом настроить сопоставление elasticsearch для обнаружения каждого из них как ключевых слов   -  person Saro    schedule 22.05.2018


Ответы (1)


В документации elasticsearch есть «тип данных Array», не могли бы вы использовать это сопоставление?

https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html

person javaTry    schedule 21.05.2018
comment
это работало таким образом, но не как тип данных ключевого слова, я не уверен, какой способ лучше, чтобы иметь массив типа данных ключевых слов или просто иметь массив - person Saro; 22.05.2018