Elasticsearch的JavaAPI
获取客户端对象
public class App { private TransportClient client; //获取客户端对象 @Before public void getClinet() throws UnknownHostException { Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //获得客户端对象 client = new PreBuiltTransportClient(settings); client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.11"), 9300)); System.out.println(client.toString()); }
## 创建索引
//创建索引 @Test public void createIndex() { client.admin().indices().prepareCreate("blog1").get(); client.close(); } //删除索引 @Test public void deleteIndex() { client.admin().indices().prepareDelete("blog").get(); client.close(); }
新建文档
//新建文档 @Test public void createIndexByJson() { //创建文档内容 String json = "{" + "\"id\":\"1\"," + "\"title\":\"基于Lucene的搜索服务器\"," + "\"content\":\"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口\"" + "}"; //创建 IndexResponse response = client.prepareIndex("blog", "article", "1").setSource(json).execute().actionGet(); //打印返回值 System.out.println("索引" + response.getIndex()); System.out.println("类型" + response.getType()); System.out.println("id" + response.getId()); System.out.println("结果" + response.getResult()); client.close(); } //创建文档以hashmap @Test public void createIndexBymap() { HashMap<String, Object> json = new HashMap<String, Object>(); json.put("id", "2"); json.put("title", "hph"); json.put("content", "博客 hph.blog"); IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet(); //打印返回值 System.out.println("索引" + response.getIndex()); System.out.println("类型" + response.getType()); System.out.println("id" + response.getId()); System.out.println("结果" + response.getResult()); client.close(); } //创建文档以hashmap @Test public void createIndexBymap() { HashMap<String, Object> json = new HashMap<String, Object>(); json.put("id", "2"); json.put("title", "hph"); json.put("content", "博客 hph.blog"); IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet(); //打印返回值 System.out.println("索引" + response.getIndex()); System.out.println("类型" + response.getType()); System.out.println("id" + response.getId()); System.out.println("结果" + response.getResult()); client.close(); } //创建文档已bulder @Test public void createIndexbyBulider() throws IOException { XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("id", "4").field("title", "博客").field("content", "hphblog.cn").endObject(); IndexResponse response = client.prepareIndex("blog", "article", "3").setSource(builder).execute().actionGet(); //打印返回值 System.out.println("索引" + response.getIndex()); System.out.println("类型" + response.getType()); System.out.println("id" + response.getId()); System.out.println("结果" + response.getResult()); client.close(); }
查询索引
//单个索引查询 @Test public void queryIndex() { //查询 GetResponse response = client.prepareGet("blog", "article", "2").get(); //打印 System.out.println(response.getSourceAsString()); //关闭资源 client.close(); } //多个索引查询 @Test public void queryMultiIndex() { //查询 MultiGetResponse response = client.prepareMultiGet().add("blog", "article", "3") .add("blog", "article", "1") .add("blog", "article", "2").get(); for (MultiGetItemResponse multiGetItemResponse : response) { GetResponse response1 = multiGetItemResponse.getResponse(); //判断是否存在 if (response1.isExists()) { System.out.println(response1.getSourceAsString()); } } } //更改数据 @Test public void update() throws ExecutionException, InterruptedException, IOException { UpdateRequest updateRequest = new UpdateRequest("blog", "article", "2"); updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "2") .field("title", "hphblog").field("content", "大数据博客学习技术分享").endObject() ); UpdateResponse response = client.update(updateRequest).get(); //打印返回值 System.out.println("索引" + response.getIndex()); System.out.println("类型" + response.getType()); System.out.println("id" + response.getId()); System.out.println("结果" + response.getResult()); client.close(); }
更新文档
//更新文档updaset @Test public void upsert() throws IOException, ExecutionException, InterruptedException { //没有就创建 IndexRequest indexRequest = new IndexRequest("blog", "article", "5"); indexRequest.source(XContentFactory.jsonBuilder().startObject().field("id", "5") .field("title", "大数据技术分享的学习").field("content", "大数据技术的分享与学习希望和大家多多交流").endObject ()); //有文档内容就更新 UpdateRequest updateRequest = new UpdateRequest("blog", "article", "5"); updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "5") .field("title", "hphblog").field("content", "技术分享、技术交流、技术学习").endObject() ); updateRequest.upsert(indexRequest); UpdateResponse response = client.update(updateRequest).get(); //打印返回值 System.out.println("索引" + response.getIndex()); System.out.println("类型" + response.getType()); System.out.println("id" + response.getId()); System.out.println("结果" + response.getResult()); client.close(); }
删除文档
//删除文档 @Test public void delete() { client.prepareDelete("blog", "article", "5").get(); client.close(); }
查询所有
//查询所有 @Test public void matchAllquery() { //1.执行查询 SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.matchAllQuery()).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator(); while (iterator.hasNext()) { SearchHit next = iterator.next(); System.out.println(next.getSourceAsString()); } client.close(); } //分词查询 @Test public void query() { //1.执行查询 SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.queryStringQuery("学习全文")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator(); while (iterator.hasNext()) { SearchHit next = iterator.next(); System.out.println(next.getSourceAsString()); } client.close(); }
通配符查询
//通配符查询 @Test public void wildcardQuery() { //1.执行查询 SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.wildcardQuery("content", "分")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator(); while (iterator.hasNext()) { SearchHit next = iterator.next(); System.out.println(next.getSourceAsString()); } client.close(); }
模糊查询
//模糊查询 @Test public void fuzzyQuery() { //1.执行查询 SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.fuzzyQuery("title", "LuceNe")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator(); while (iterator.hasNext()) { SearchHit next = iterator.next(); System.out.println(next.getSourceAsString()); } client.close(); } //映射相关的操作 @Test public void createMapping() throws Exception { // 1设置mapping XContentBuilder builder = XContentFactory.jsonBuilder() .startObject() .startObject("article") .startObject("properties") .startObject("id1") .field("type", "string") .field("store", "yes") .endObject() .startObject("title2") .field("type", "string") .field("store", "no") .endObject() .startObject("content") .field("type", "string") .field("store", "yes") .endObject() .endObject() .endObject() .endObject();
添加mapping
// 2 添加mapping PutMappingRequest mapping = Requests.putMappingRequest("blog1").type("article").source(builder); client.admin().indices().putMapping(mapping).get(); // 3 关闭资源 client.close(); }
原文:http://hphblog.cn/2018/12/16/Elasticsearch%E7%9A%84JavaAPI/