Пользовательский анализатор не работает Elasticsearch

{
  "_source": {
    "enabled": false
  },
  "analysis": {
    "analyzer": {
      "default": {
        "type": "custom",
        "tokenizer": "uax_url_email",
        "filter": "lowercase,standard,stop"
      }
    }
  },
  "mappings": {
    "table": {
      "properties": {
        "field1": {
          "type": "string",
          "include_in_all": false,
          "index": "no"
        },
        "field2": {
          "type": "long",
          "include_in_all": false,
          "index": "no"
        },
        "field3": {
              "type": "string",
              "index": "analyzed"
            }
      }
    }
  }
}

При тестировании анализатор не работает. Анализатор не должен индексировать стоп-слова, а также должен индексировать адрес электронной почты в целом. Когда я «ПРОВЕРЯЮ АНАЛИЗ» и набираю «Джек в порядке», происходит индексация всех трех слов. Я не хочу, чтобы он индексировал стоп-слова на английском языке, такие как «и», «есть» и т. д.


person Akshat    schedule 08.06.2015    source источник


Ответы (1)


Вы устанавливаете поля как «индекс»: «нет», а также отключаете include_in_all. Как вы ожидаете, что что-то будет помещено в индекс? Цитата из документации:

no означает, что оно вообще не будет доступно для поиска (как отдельное поле; оно все еще может быть включено в _all). Установка no отключает include_in_all.

И фактический settings должен быть таким (вам не хватает "settings" в вашем определении индекса):

{
  "_source": {
    "enabled": false
  },
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "custom",
          "tokenizer": "uax_url_email",
          "filter": "lowercase,standard,stop"
        }
      }
    }
  },
  "mappings": {
    "table": {
      "properties": {
        "field1": {
          "type": "string",
          "include_in_all": false,
          "index": "no"
        },
        "field2": {
          "type": "long",
          "include_in_all": false,
          "index": "no"
        },
        "field3": {
          "type": "string",
          "index": "analyzed"
        }
      }
    }
  }
}
person Andrei Stefan    schedule 08.06.2015
comment
У меня есть другие поля, в которых индекс установлен на «да», просто я не показывал их в этом конкретном фрагменте кода. Я могу показать их, если хочешь. - person Akshat; 08.06.2015
comment
Поделитесь еще, потому что вопрос не совсем ясен. Поделитесь, что вы пробовали (точные команды), каков был результат и каковы были ожидания. - person Andrei Stefan; 08.06.2015
comment
Я новичок в stackoverflow, поэтому не знал, что объяснять. Я объяснил проблему дальше. - person Akshat; 08.06.2015
comment
Я отредактировал свой ответ. Вам не хватает ключевого элемента в определении индекса: settings. Попробуйте мой код и посмотрите, работает ли он для вас. - person Andrei Stefan; 08.06.2015