我是Elastic Search的新手,我想在搜索查询中包含多个字段,例如:
Title=my title and city=mycity or country = mycountry
如何使用Java客户端执行这种查询?我试过了
SearchResponse response = client.prepareSearch("titan")
.setTypes("vertex")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(QueryBuilders.fieldQuery("title", "mytitle"))
.setQuery(QueryBuilders.fieldQuery("city", "mycity"))
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();
但是没用
最佳答案
我相信,您必须在那做booleanQuery。
就像是:
SearchResponse response = client.prepareSearch("titan")
.setTypes("vertex")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(QueryBuilders.boolQuery()
.must(QueryBuilders.fieldQuery("title", "mytitle"))
.should(QueryBuilders.fieldQuery("city", "mycity"))
.should(QueryBuilders.fieldQuery("country", "mycountry")))
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();
简而言之, bool(boolean) 查询的规则是,所有
must
子句都应为true,并且should
子句中至少应为true(必须更改的true子句的数量可以更改,一个是默认设置)。
关于elasticsearch - Elasticsearch :在查询中包含多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23710028/