2017-02-06 9 views
0

Я работаю над задачей, в которой мне нужно заменить Solr Elasticsearch на Java-базу. Один из методов позволяет текстовые запросы, которые будут представлены в Solr:Запуск текстового запроса с использованием Elasticsearch Java API

public List<String> executeQueryForCollection(SolrQuery query, String collectionName) 
     throws IOException, SolrServerException { 
    QueryResponse response = this.client.query(collectionName, query); 
    return response.getResults(); 
} 

Где query это любой допустимый запрос Solr (name_s:'Joe Bloggs' AND age_i:15). Что эквивалентно Elasticearch (версия 2.4.4)? Elasticsearch API выглядит гораздо более ограничительным.

ответ

1

Для этого вам понадобится запрос query_string.

QueryStringQueryBuilder qs = QueryBuilders.queryStringQuery("name_s:'Joe Bloggs' AND age_i:15"); 
client.prepareSearch(index).setQuery(qs); 
+0

Является 'client.prepareSearch (индекс) .setQuery (QS)' 'предпочтительнее client.prepareSearch (индекс) .setQuery ("name_s: 'Джо Bloggs' И age_i: 15")' или же они оба делать то же самое? –

+0

См. Мой обновленный ответ: 'setQuery()' не принимает строки, только объекты-объекты запроса – Val

+0

ОК спасибо. 'setQuery()' принимает Strings в 2.4.4, но, возможно, QueryBuilder более безопасен в долгосрочной перспективе. –

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

  • Нет связанных вопросов^_^