elasticsearch–使用java进行数据操作
一、简介
这里介绍在java中,使用elasticsearch的java客户端进行数据操作,使用的es版本为6.2.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.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);
});
}
}