java elasticsearch 6.4.2 client
阿新 • • 發佈:2018-12-20
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.4.2</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.4.2</version> <exclusions> <exclusion> <artifactId>commons-codec</artifactId> <groupId>commons-codec</groupId> </exclusion> <!--此處要排除掉自帶的,這個自帶的版本低,會報錯--> <exclusion> <artifactId>elasticsearch</artifactId> <groupId>org.elasticsearch</groupId> </exclusion> </exclusions> </dependency>
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.*; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.builder.SearchSourceBuilder; RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))); /*建立索引*/ CreateIndexRequest request = new CreateIndexRequest("test"); Map<String, Object> jsonMap = new HashMap<>(); Map<String, Object> message = new HashMap<>(); message.put("type", "text"); Map<String, Object> messageInt = new HashMap<>(); messageInt.put("type", "long"); Map<String, Object> messageKeyword = new HashMap<>(); messageKeyword.put("type", "keyword"); Map<String, Object> properties = new HashMap<>(); properties.put("userId", messageInt); properties.put("userName", message); properties.put("email", messageKeyword); Map<String, Object> mapping = new HashMap<>(); mapping.put("properties", properties); jsonMap.put("test", mapping); request.mapping("test", jsonMap); client.indices().create(request,RequestOptions.DEFAULT); /*向索引新增資料*/ for(long i = 2; i < 1000l; i++) { Map<String,Object> data = new HashMap<>(); data.put("userId",i); data.put("userName","username"+1); data.put("email", "username"+i+"@qq.com"); IndexRequest request = new IndexRequest("test","test"); request.source(JSON.toJSONString(data), XContentType.JSON); client.index(request,RequestOptions.DEFAULT); } /*條件查詢*/ SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("userName", "username1","username2"); SearchRequest request = new SearchRequest("test"); request.types("test"); sourceBuilder.query(termsQueryBuilder); request.source(sourceBuilder); SearchResponse searchResponse = client.search(request,RequestOptions.DEFAULT); Map<String,Object> map = searchResponse.getHits().getAt(0).getSourceAsMap(); System.out.println(searchResponse); /*指令碼查詢*/ ScriptQueryBuilder scriptQueryBuilder = QueryBuilders.scriptQuery(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG,"doc['userId'].value%100==0", new HashMap<>())); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); SearchRequest request = new SearchRequest("test"); request.types("test"); sourceBuilder.query(scriptQueryBuilder); request.source(sourceBuilder); SearchResponse searchResponse = client.search(request,RequestOptions.DEFAULT); Map<String,Object> map = searchResponse.getHits().getAt(0).getSourceAsMap(); for (int i = 0; i < searchResponse.getHits().getTotalHits(); i++) { System.out.println(searchResponse.getHits().getAt(i).getSourceAsString()); } /*多條件查詢*/ ScriptQueryBuilder scriptQueryBuilder = QueryBuilders.scriptQuery(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG,"doc['userId'].value%100==0", new HashMap<>())); TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("email", "
[email protected]","[email protected]"); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(scriptQueryBuilder).must(termsQueryBuilder); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); SearchRequest request = new SearchRequest("test"); request.types("test"); sourceBuilder.query(boolQueryBuilder); request.source(sourceBuilder); SearchResponse searchResponse = client.search(request,RequestOptions.DEFAULT); for (int i = 0; i < searchResponse.getHits().getTotalHits(); i++) { System.out.println(searchResponse.getHits().getAt(i).getSourceAsString()); }