es---java操作API

1.maven文件及jar包

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>

      <groupId>com.roncoo.es</groupId>
      <artifactId>es-core-first</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
      <name>es-core-first</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>

      <dependencies>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.6.3</version>//这个必须和自己安装的版本对应,否则报错
        </dependency>
      </dependencies>
</project>

2.增删改查操作

package com.roncoo.es.score.first;

import java.net.InetAddress;

import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

/**  文件 1
 * 员工增删改查的应用程序
 * @author Administrator
 *
 */
public class EmployeeCRUDApp {

    @SuppressWarnings({ "unchecked", "resource" })
    public static void main(String[] args) throws Exception {
        // 先构建client
        Settings settings = Settings.builder()
                .put("cluster.name", "es") //集群的名字 。查看自己的集群名字:192.168.1.115:9200
                .build();
        
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.115"), 9300));
        
        createEmployee(client); 
    //    getEmployee(client);
//        updateEmployee(client); 
//        deleteEmployee(client); 
        
        client.close();
    }
    
    /**
     * 创建员工信息(创建一个document)
     * @param client
     */
    private static void createEmployee(TransportClient client) throws Exception {
        IndexResponse response = client.prepareIndex("company", "employee", "2")
                .setSource(XContentFactory.jsonBuilder()
                        .startObject()
                            .field("name", "jack3")
                            .field("age", 217)
                            .field("position", "technique")
                            .field("country", "china")
                            .field("join_date", "2017-01-01")
                            .field("salary", 10000)
                        .endObject())
                .get();
        System.out.println(response.getResult()); 
    }
    
    /**
     * 获取员工信息
     * @param client
     * @throws Exception
     */
    private static void getEmployee(TransportClient client) throws Exception {
        GetResponse response = client.prepareGet("company", "employee", "1").get();
        System.out.println(response.getSourceAsString()); 
    }
    
    /**
     * 修改员工信息
     * @param client
     * @throws Exception
     */
    private static void updateEmployee(TransportClient client) throws Exception {
        UpdateResponse response = client.prepareUpdate("company", "employee", "1") 
                .setDoc(XContentFactory.jsonBuilder()
                            .startObject()
                                .field("position", "technique manager")
                            .endObject())
                .get();
        System.out.println(response.getResult());  
     }
    
    /**
     * 删除 员工信息
     * @param client
     * @throws Exception
     */
    private static void deleteEmployee(TransportClient client) throws Exception {
        DeleteResponse response = client.prepareDelete("company", "employee", "1").get();
        System.out.println(response.getResult());  
    }
    
}

3.查看添加的数据

GET company/employee/_search
{
  "query": {
    "match_all": {}
  }
}

 4.按条件查询---年龄在30-40岁的

package com.roncoo.es.score.first;

import java.net.InetAddress;

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

/**
 * 员工搜索应用程序
 * @author Administrator
 *
 */
public class EmployeeSearchApp {

    @SuppressWarnings({ "unchecked", "resource" })
    public static void main(String[] args) throws Exception {
        Settings settings = Settings.builder()
                .put("cluster.name", "es")
                .build();
        
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.115"), 9300)); 
        
    //    prepareData(client);
        executeSearch(client);
        
        client.close();
    
    }

    /**
     * 执行搜索操作  
     * @param client
     */
    private static void executeSearch(TransportClient client) {
        SearchResponse response = client.prepareSearch("company")
                .setTypes("employee")
                .setQuery(QueryBuilders.matchQuery("position", "technique"))
                .setPostFilter(QueryBuilders.rangeQuery("age").from(30).to(40))
                .setFrom(0).setSize(1)
                .get();
        
        SearchHit[] searchHits = response.getHits().getHits();
        for(int i = 0; i < searchHits.length; i++) {
            System.out.println(searchHits[i].getSourceAsString()); 
        }
    }

    /**
     * 准备数据 (添加数据)
     * @param client
     */
    private static void prepareData(TransportClient client) throws Exception {
        client.prepareIndex("company", "employee", "1") 
                .setSource(XContentFactory.jsonBuilder()
                        .startObject()
                            .field("name", "jack")
                            .field("age", 27)
                            .field("position", "technique software")
                            .field("country", "china")
                            .field("join_date", "2017-01-01")
                            .field("salary", 10000)
                        .endObject())
                .get();
        
        client.prepareIndex("company", "employee", "2") 
                .setSource(XContentFactory.jsonBuilder()
                        .startObject()
                            .field("name", "marry")
                            .field("age", 35)
                            .field("position", "technique manager")
                            .field("country", "china")
                            .field("join_date", "2017-01-01")
                            .field("salary", 12000)
                        .endObject())
                .get();
        
        client.prepareIndex("company", "employee", "3") 
        .setSource(XContentFactory.jsonBuilder()
                .startObject()
                    .field("name", "tom")
                    .field("age", 32)
                    .field("position", "senior technique software")
                    .field("country", "china")
                    .field("join_date", "2016-01-01")
                    .field("salary", 11000)
                .endObject())
        .get();
        
        client.prepareIndex("company", "employee", "4") 
        .setSource(XContentFactory.jsonBuilder()
                .startObject()
                    .field("name", "jen")
                    .field("age", 25)
                    .field("position", "junior finance")
                    .field("country", "usa")
                    .field("join_date", "2016-01-01")
                    .field("salary", 7000)
                .endObject())
        .get();
        
        client.prepareIndex("company", "employee", "5") 
        .setSource(XContentFactory.jsonBuilder()
                .startObject()
                    .field("name", "mike")
                    .field("age", 37)
                    .field("position", "finance manager")
                    .field("country", "usa")
                    .field("join_date", "2015-01-01")
                    .field("salary", 15000)
                .endObject())
        .get();
    }
    
}

 

posted @ 2018-05-28 17:16  努力中国  阅读(401)  评论(0)    收藏  举报