Я думаю, что это очень простой вопрос, но я продолжаю ходить по домам, поэтому любая помощь, указывающая мне в правильном направлении, будет оценена по достоинству.Основы добавления пользовательского анализатора в индекс, построенный с использованием пружины
Я унаследовал приложение java, которое строит и обновляет индекс поиска, используя spring-data-elasticsearch (1.2.1.RELEASE на данный момент). Я модифицировал это довольно успешно различными пустяками, но теперь я хочу добавить собственный анализатор для использования в одном поле (char mapping to remove/'s).
Индекс, построенный по существу, является одним индексом с различными типами документов. Кажется, он построен практически из коробки. Я довольно новичок в java и весне, но и отслеживание всех конфигураций и автоматической проводки может по-прежнему иногда меня удалять, но насколько я вижу, что клиентская конфигурация в контексте XML-файла указывает прямо на код пружины и не делает добавить много кроме названия пользовательского индекса и места для интерфейсов хранилища и код
<elasticsearch:node-client id="esClient" local="true" cluster-name="products"/>
<elasticsearch:repositories base-package="com.warehouse.es.repos"/>
<bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="esClient"/>
</bean>
код, то, кажется, использовать аут объекта ящик клиента
@Autowired
public void setClient(Client client) throws IOException {
this.client = client;
, а затем переходит на набор различных примеры с использованием картографических файлов в этих строках
createTypeMapping(client, Constants.INDEX_NAME, INDEX_TYPE, "Products.mapping");
Извините, если некоторые из них слишком короткие (или слишком вафли для этого основного вопроса), но я пытаюсь найти/найти пример того, как и где добавить свой пользовательский анализатор. У меня есть документация и примеры, чтобы показать мне, как создать некоторые JSON для создания пользовательского анализатора (например https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-mapping-charfilter.html#analysis-mapping-charfilter и некоторые предыдущие StackOverflow д & S'S)
, но я изо всех сил, чтобы понять, где я добавить это в мой код Java создавая индекс.
Очевидно, что чем больше помогает, тем лучше (!), Но на самом деле на этом этапе я пытаюсь понять, могу ли я просто добавить анализатор в файл yml или мне нужно добавить код для изменения клиента каким-то образом ? или даже просто добавить его к сопоставлениям отдельных типов.
Спасибо.
У вас есть доступ к самому кластеру ES? В вашем java-коде есть ли у вас какие-либо файлы * .json, которые могут определять сопоставление? –
У меня есть доступ к кластеру. В этом случае он записывается в отдельный кластер в целевой папке, а затем я копирую его (в среде dev) в свою локальную папку данных es. Существует множество файлов .mapping, которые определяют типы, но ничего, что определяет индекс на более высоком уровне. Может быть, я могу просто добавить анализатор custome на этом уровне? например, продукты.отображение { "свойства": { "создал": { "типа": "длинный" }, "Резюме": { "типа": "строка", "анализатор": "стандарт" } , «relatedProducts»: {... – gringogordo
Я пытаюсь решить, является ли индекс/тип созданным непосредственно в кластере (например, выполняется команда 'curl') или если создание индекса/типов обрабатывается ваше приложение Spring. В последнем случае, я думаю, вы можете следовать некоторым образцам кода из [этой ссылки на github] (https://github.com/spring-projects/spring-data-elasticsearch/commit/a3828c6161daa9fe31eacdcc93a286119ac470fd). –