Как искать список ключевых слов с помощью Spring Data Elasticsearch?

Я использую ElasticsearchRepository и хочу выполнить поиск по некоторым ключевым словам. То, что я хочу запросить, похоже на;

//Get all results which contains at least one of these keywords
public List<Student> searchInBody(List<String> keywords);

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

@Repository
public interface StudentRepository extends 
ElasticsearchRepository<Student, String> {

    public List<Student> findByNameOrderByCreateDate(String name);

    @Query("{\"query\" : {\"match\" : {\"_all\" : \"?0\"}}}")
    List<ParsedContent> searchInBody(String keyword);

}

person hellzone    schedule 25.09.2017    source источник
comment
Вам удалось это решить?   -  person Ahmet    schedule 31.05.2018
comment
@Ahmet Я создал собственный запрос репо, например mkyong.com/spring-data/   -  person hellzone    schedule 31.05.2018


Ответы (1)


Да, вы можете передать массив объектов String в ElasticsearchRepository. Elasticsearch предоставляет запрос терминов для этого.

Также вы должны использовать JSONArray вместо List<String>, т.е. вам нужно преобразовать List<String> в JsonArray. (Причина: проверьте синтаксис эластичного запроса, приведенный ниже)

Вот как вы можете использовать его в своем коде:

@Query("{\"bool\": {\"must\": {\"terms\": {\"your_field_name\":?0}}}}")
List<ParsedContent> searchInBody(JSONArray keyword);

Результат будет содержать объекты, по крайней мере с одним ключевым словом, указанным в вашем массиве ключевых слов.

Ниже приведено представление запроса отдыха вышеприведенного кода Java, которое вы можете использовать в своей консоли kibana или в терминале:

GET your_index_name/_search
{
 "query" : {
            "bool": {
                     "must": {
                              "terms": {
                                       "your_field_name":["keyword_1", "keyword_2"]
                                       }
                             }
                    }
           }
}

Примечание. Дополнительные параметры см. на странице запрос-набора-терминов

person 100rabh    schedule 27.11.2018