Java-API ElasticSearch для получения нескольких документов по индексам (с использованием псевдонима) с использованием идентификатора элемента - PullRequest
0 голосов
/ 04 сентября 2018

ElasticSearch имеет GET API, с помощью которого мы можем запросить по одному индексу для конкретного документа, используя идентификатор документа. Начиная с Elasticsearch 5.1, GET API также поддерживает запросы к документам по псевдонимам, которые могут указывать на несколько индексов, например:

GET /my_alias_name/_search/
{
        "query": { 
        "bool": {
         "filter": {
                "term": {
                   "_id": "AUwNrOZsm6BwwrmnodbW"
                }
            }
        }
    }
}

Каков соответствующий JAVA API для достижения этого (используя JestClient ...)?

1 Ответ

0 голосов
/ 04 сентября 2018

1) Создание клиента:

JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig.Builder("http://localhost:9200")
                        .multiThreaded(true)
                        .build());
JestClient jestClient = factory.getObject();

2) Подготовить поисковый запрос:

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.boolQuery().filter(QueryBuilders.termQuery("_id", "AUwNrOZsm6BwwrmnodbW")));

Search search = new Search.Builder(searchSourceBuilder.toString())
                        .addIndex("my_alias_name") -> Add index name or an alias. 
                        .addType("my_type") -> Add index type here. 
                        .build();

3) Выполнить поиск:

SearchResult result = jestClient.execute(search);

Примечание: Мы можем добавить псевдоним вместо имени индекса, и он работает так же.

...