Elasticsearch Java API 的使用—多条件查询
生活随笔
收集整理的這篇文章主要介紹了
Elasticsearch Java API 的使用—多条件查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//多條件設置
MatchPhraseQueryBuilder mpq1 = QueryBuilders.matchPhraseQuery("pointid","W3.UNIT1.10LBG01CP301");
MatchPhraseQueryBuilder mpq2 = QueryBuilders.matchPhraseQuery("inputtime","2016-07-21 00:00:01");
QueryBuilder qb2 = QueryBuilders.boolQuery().must(mpq1).must(mpq2);實現多條件查詢public class EsBool{public void BoolSearch(TransportClient client){//多條件設置MatchPhraseQueryBuilder mpq1 = QueryBuilders.matchPhraseQuery("pointid","W3.UNIT1.10LBG01CP301");MatchPhraseQueryBuilder mpq2 = QueryBuilders.matchPhraseQuery("inputtime","2016-07-21 00:00:01");QueryBuilder qb2 = QueryBuilders.boolQuery() .must(mpq1) .must(mpq2);SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(qb2);//System.out.println(sourceBuilder.toString());//查詢建立SearchRequestBuilder responsebuilder = client.prepareSearch("pointdata").setTypes("pointdata");SearchResponse myresponse=responsebuilder.setQuery(qb2).setFrom(0).setSize(50).addSort("inputtime", SortOrder.ASC)//.addSort("inputtime", SortOrder.DESC).setExplain(true).execute().actionGet();SearchHits hits = myresponse.getHits();for(int i = 0; i < hits.getHits().length; i++) {System.out.println(hits.getHits()[i].getSourceAsString());}}
}
@Test public void testSearch() { String index="index_log_daily";String type="uq_log";String uquestion = "139";String province = "江蘇";SearchResponse searchResponse = client.prepareSearch(index) .setTypes(type) .setQuery(QueryBuilders.matchAllQuery()) //查詢所有.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("uquestion", uquestion))//查詢uquestion為139的.must(QueryBuilders.matchQuery("province", province)))//查詢省份為江蘇的//.setQuery(QueryBuilders.matchQuery("uquestion", "12599").operator(Operator.AND)) //根據tom分詞查詢name,默認or//.setQuery(QueryBuilders.matchQuery("province", "江蘇").operator(Operator.AND)) //根據tom分詞查詢name,默認or//.setQuery(QueryBuilders.multiMatchQuery("tom", "name", "age")) //指定查詢的字段 //.setQuery(QueryBuilders.queryString("name:to* AND age:[0 TO 19]")) //根據條件查詢,支持通配符大于等于0小于等于19 //.setQuery(QueryBuilders.termQuery("name", "tom"))//查詢時不分詞 .setSearchType(SearchType.QUERY_THEN_FETCH) .setFrom(0).setSize(10)//分頁 //.addSort("age", SortOrder.DESC)//排序 .get(); SearchHits hits = searchResponse.getHits(); long total = hits.getTotalHits(); System.out.println(total); SearchHit[] searchHits = hits.hits(); for(SearchHit s : searchHits) { System.out.println(s.getSourceAsString());String []logindex=s.getSourceAsString().split(",");} }
提示:根據留言區一位同學的提示,因為這篇博客寫的時候比較早,屬于ES早期版本,后來版本不推薦使用TransportClient client,大家考慮替換成RestHighLevelClient和SearchSourceBuilder來進行新版本的迭代。
?
?
總結
以上是生活随笔為你收集整理的Elasticsearch Java API 的使用—多条件查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java常见的时间处理工具类
- 下一篇: Java中HashMap、LinkedH