2014-06-15 4 views
7

Я просмотрел документы для Search API, но нахожу их недостаточно описательными (хотя они очень хорошо написаны). Я пытаюсь создать запрос, но мало понимаю обо всех доступных вариантах и ​​не могу найти информацию по этому вопросу при создании запроса, и я не могу перевести запросы, которые я могу запустить в Sense для запросов, которые я могу запустить, используя Java API.Elasticsearch Java API - построение запросов

В смысле у меня есть следующие:

GET index/_search 
{ 
    "query": { 
    "match" : { 
     "name" : "some string" 
    } 
    } 
} 

И в моем Java коде у меня есть:

node = nodeBuilder().client(true).clusterName(CLUSTER_NAME).node(); 
client = node.client(); 
QueryBuilder qb = QueryBuilders.termQuery("name", "some string"); 
SearchResponse response = client.prepareSearch("index") // 
    .setQuery(qb) // Query 
    .execute().actionGet(); 

Но они дают разные результаты поиска. В чем разница, поскольку я не вижу этого? Также есть хороший источник информации, который может быть полезен?

ответ

13

Если вы хотите, чтобы два запроса возвращали те же результаты, вам нужно использовать тот же тип запроса. В вашем Sense запросе вы выполняете запрос матча:

"query": { 
    "match" : { 
     "name" : "some string" 
    } 
    } 

но в коде Java вы выполняете termQuery:

QueryBuilder qb = QueryBuilders.termQuery("name", "some string"); 

Так, чтобы ответить на ваш вопрос использовать запрос соответствия вместо этого в коде Java :

QueryBuilder qb = QueryBuilders.matchQuery("name", "some string"); 

Что касается второго вопроса, он немного широк. Я бы, конечно, попытался пройти через документацию и искать здесь в StackOverflow. Что касается Java API, я бы посмотрел here для обзора и here для получения информации по запросу dsl thru Java.

Я думаю, что хорошее общее понимание того, как работает Elasticsearch и некоторый комфорт с механизмом запроса через REST API, будет очень полезно для понимания Java API. Хорошие места, чтобы начать:

http://joelabrahamsson.com/elasticsearch-101/

http://exploringelasticsearch.com/

http://java.dzone.com/articles/elasticsearch-getting-started

+0

Благодаря вашим исправления работали. Что касается документов, которые я прочитал и перечитал все, кроме одной из ссылок, которые вы предоставили, я просто пытаюсь сгладить более тонкие моменты, я думаю, что доберусь до конца. – Neilos

+1

Да, я обнаружил, что мне нужно продолжать читать некоторые из них снова и снова, чтобы получить детали, прибитые. ES довольно легко начать использовать, но сложность внизу может быть сложной время от времени. –

Смежные вопросы