2015-10-07 5 views
2

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

Я унаследовал приложение 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 или мне нужно добавить код для изменения клиента каким-то образом ? или даже просто добавить его к сопоставлениям отдельных типов.

Спасибо.

+0

У вас есть доступ к самому кластеру ES? В вашем java-коде есть ли у вас какие-либо файлы * .json, которые могут определять сопоставление? –

+0

У меня есть доступ к кластеру. В этом случае он записывается в отдельный кластер в целевой папке, а затем я копирую его (в среде dev) в свою локальную папку данных es. Существует множество файлов .mapping, которые определяют типы, но ничего, что определяет индекс на более высоком уровне. Может быть, я могу просто добавить анализатор custome на этом уровне? например, продукты.отображение { "свойства": { "создал": { "типа": "длинный" }, "Резюме": { "типа": "строка", "анализатор": "стандарт" } , «relatedProducts»: {... – gringogordo

+0

Я пытаюсь решить, является ли индекс/тип созданным непосредственно в кластере (например, выполняется команда 'curl') или если создание индекса/типов обрабатывается ваше приложение Spring. В последнем случае, я думаю, вы можете следовать некоторым образцам кода из [этой ссылки на github] (https://github.com/spring-projects/spring-data-elasticsearch/commit/a3828c6161daa9fe31eacdcc93a286119ac470fd). –

ответ

1

Если индекс/тип был создан непосредственно в кластере (например, выполняется команда curl) или если создание индекса/типов обрабатывается вашим приложением Spring. В последнем случае, я думаю, вы можете следовать некоторым образцам кода от this link on github.

Если у вас есть Products.mapping файл с этим контентом, который действительно похож на тип. Однако любые данные, которые у вас есть в вашем кластере, должны быть переиндексированы, если вы измените сопоставление типов, добавив новый анализатор.

EDIT с выводами на плакаты: это not possible, чтобы установить параметры в отдельные файлы сопоставления проекта, но в виде отдельного файла с аннотацией @settings.