Нужно написать собственный анализатор для ElasticsearchRepository запрос findBy - PullRequest
0 голосов
/ 25 марта 2020

У меня есть коллекция ES со следующей схемой do c.

`

public class Address {
@Id
private String id;
private String name;
private String type;
private String city;
}

` Мой репозиторий выглядит следующим образом:

public interface NetworkElementsESRepository extends ElasticsearchRepository<Address, String> {
Address findByNameAndCity(String name, String city);}

I нужно получить все адреса с именем = "B00 / A3K / 24" в определенном городе, используя следующий запрос. addressRepo.findByNameAndCity (Имя, Город) . Я не могу получить требуемые адреса, поскольку в поле name есть специальные символы ('/'), и стандартный анализатор, похоже, разбивает строку поиска на другой токен. Мне нужна помощь с пользовательским анализатором для ElasticsearchRepository.

1 Ответ

0 голосов
/ 26 марта 2020

Сначала вам нужно либо создать анализатор в Elasticsearch самостоятельно , либо предоставить файл настроек при создании индекса с помощью Spring Data Elasticsearch.

Если вам всегда нужен собственный анализатор для В этом поле вы можете указать анализатор в аннотации @Field, которую вы указали для свойства name, либо с помощью analyzer, либо с помощью searchAnalyzer.

Если вам нужен анализатор только для поиска в репозитории , вы должны создать метод репозитория, помеченный @Query и добавить туда свой пользовательский запрос.

См. Документы Elasticsearch , как создается такой запрос и Документы Spring Data Elasticsearch для использования аннотации @Query.

...