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

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

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

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

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

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

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

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

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

     "my_field2": { "properties": { "title": { "type": "string", "index": "not_analyzed" } } } 

    Здесь вы можете найти https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-core-types.html , для получения дополнительной информации.

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

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

    становится NEW:

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

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

    keyword может использоваться анализатор 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

    Давайте будем гением компьютера.