一、简介
在前面文章中,介绍了使用http对elasticsearch进行数据操作,这里将介绍在java中,使用elasticsearch
的java客户端进行数据操作。 这里使用的es版本为6.2.2。
二、步骤
1、添加maven依赖
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.2.2</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>6.2.2</version> </dependency>
2、在java中es数据操作,这里直接上代码,详情请查看注释。
import com.alibaba.fastjson.JSONObject; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.transport.client.PreBuiltTransportClient; import java.net.InetAddress; import java.util.Arrays; import java.util.Map; public class ElasticSearchPaperMain { public static void main(String[] args) throws Exception { //指定cluster.name Settings settings = Settings.builder().put("cluster.name", "my-application") .put("client.transport.sniff", true) .build(); //创建客户端,注意java端口默认为9300 Client client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.0.107"), 9300)); //新建 IndexResponse response = client.prepareIndex("stu", "doc","1") .setSource( XContentFactory.jsonBuilder() .startObject() .field("stu_id", "001") .field("stu_name", "apple1") .endObject() ).get(); System.out.println(response.toString()); //更新 JSONObject obj = new JSONObject(); obj.put("stu_name", "banana"); UpdateResponse updateResponse = client.prepareUpdate("stu", "doc", "1") .setDoc(obj.toJSONString(), XContentType.JSON).get(); System.out.println(updateResponse); //删除 DeleteResponse deleteResponse = client.prepareDelete("stu","doc","1").execute().actionGet(); System.out.println(deleteResponse); //单个查询 GetResponse getResponse = client.prepareGet("stu", "doc","1").execute().actionGet(); System.out.println(getResponse); //精确查询 QueryBuilder queryBuilder = QueryBuilders.disMaxQuery() .add(QueryBuilders.termQuery("stu_name", "apple1")); SearchResponse searchResponse = client.prepareSearch("stu").setQuery(queryBuilder).execute().actionGet(); //模糊查询 queryBuilder = QueryBuilders.wildcardQuery("stu_name", "apple*"); searchResponse = client.prepareSearch("stu").setQuery(queryBuilder).execute().actionGet(); System.out.println(searchResponse); //查询所有 searchResponse = client.prepareSearch("stu").execute().actionGet(); System.out.println(searchResponse); //分页查询 searchResponse = client.prepareSearch("stu").addSort("_score", SortOrder.DESC).setFrom(2).setSize(2).execute().actionGet(); System.out.println(searchResponse); Arrays.stream(searchResponse.getHits().getHits()).forEach(t->{ Map<String, Object> m = t.getSourceAsMap(); String stuId = (String) m.get("stu_id"); String stuName = (String) m.get("stu_name"); System.out.println(stuId+" "+stuName); }); } }