Подтвердить что ты не робот

Как не анализировать в ElasticSearch?

У меня есть поле в поле ElasticSearch, которое я не хочу анализировать, т.е. е. он должен храниться и сопоставляться дословно. Значения будут содержать буквы, цифры, пробелы, тире, косые черты и, возможно, другие символы.

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

Есть ли супер простой анализатор, который, в основном, не анализирует? Или есть другой способ обозначить, что это поле не анализируется?

Я только создаю индекс, я ничего не делаю. Я могу использовать анализаторы типа "английский" для других полей, которые, кажется, являются встроенными именами для предварительно сконфигурированных анализаторов. Есть ли список других имен? Может быть, мне подходят мои потребности (а именно ничего не делать с вводом).

Это мое отображение в настоящее время:

{
  "my_type": {
    "properties": {
      "my_field1": { "type": "string", "analyzer": "english" },
      "my_field2": { "type": "string" }
    }
  }
}

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

Примерное значение для my_field2 будет "B45c 14/04".

4b9b3361

Ответ 2

Это больше не верно из-за удаления типа string (заменяемого на keyword и ''), как описано здесь. Вместо этого вы должны использовать "index": true | false "index": true | false

Например, СТАРЫЙ:

{
  "foo": {
    "type" "string",
    "index": "not_analyzed"
  }
}

становится новым:

{
  "foo": {
    "type" "keyword",
    "index": true
  }
}

Это означает, что поле проиндексировано, но так как оно напечатано как keyword не анализируется неявно.

Ответ 3

Можно также использовать анализатор

keyword.

// don't actually use this, use "index": "not_analyzed" instead
{
  "my_type": {
    "properties": {
      "my_field1": { "type": "string", "analyzer": "english" },
      "my_field2": { "type": "string", "analyzer": "keyword" }
    }
  }
}

Как отмечено здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keyword-analyzer.html, имеет смысл отметить эти поля как not_analyzed.

Но анализатор keyword может быть полезен, когда он установлен по умолчанию для всего индекса.

UPDATE: как сказано в комментариях, string больше не поддерживается в 5.X