【发布时间】:2015-01-30 08:41:08
【问题描述】:
我有一个弹性搜索索引,用户的字段如下: “名称”:“凯” “年龄”:“23” “位置”:“德里,印度” “标签”:[“搜索”,“nosql”] 等等
我想在用户的所有字段中查询多个字符串(例如 ["nosql","delhi"])。是否可以使用 Java API?
这是我正在使用的代码示例。 (但这与问题无关)只是为了知道我现在正在使用的对象。
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.matchAllQuery());
if(location!=null) {
queryBuilder.must(QueryBuilders.matchQuery("location",location));
}
BoolFilterBuilder filerBuilder=FilterBuilders.boolFilter();
for(String skill:skills){
filerBuilder.must(FilterBuilders.rangeFilter("tags."+skill).from(0));
}
filerBuilder.must(FilterBuilders.queryFilter(queryBuilder));
if(age!=null) {
filerBuilder.must(FilterBuilders.rangeFilter("age").from(age[0]).to(age[1]));
}
SearchResponse response = client.prepareSearch("skillbin")
.setTypes("stackdump")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(queryBuilder)
.setPostFilter(filerBuilder)
.addSort("reputation", SortOrder.DESC)
.execute()
.actionGet();
SearchHits hits=response.getHits();
提前致谢。 :)
【问题讨论】:
标签: java elasticsearch elasticsearch-plugin nosql