1、es这门技术有点特殊,跟比如其他的像纯java的课程,比如分布式课程,或者大数据类的课程,比如hadoop,spark,storm等。不太一样
2、es非常重要的一个api,是它的restful api,你自己思考一下,掌握这个es的restful api,可以让你执行一些核心的运维管理的操作,比如说创建索引,维护索引,执行各种refresh、flush、optimize操作,查看集群的健康状况,比如还有其他的一些操作,就不在这里枚举了。或者说探查一些数据,可能用java api并不方便。
3、es的学习,首先,你必须学好restful api,然后才是你自己的熟悉语言的api,java api。
员工信息

  • 姓名
  • 年龄
  • 职位
  • 国家
  • 入职日期
  • 薪水
    1、maven依赖
    ``` org.elasticsearch.client transport 5.2.2 org.apache.logging.log4j log4j-api 2.7 org.apache.logging.log4j log4j-core 2.7
  1. log4j2.properties

appender.console.type = Console appender.console.name = console appender.console.layout.type = PatternLayout

rootLogger.level = info rootLogger.appenderRef.console.ref = console

##### 2、构建client

Settings settings = Settings.builder() .put(“cluster.name”, “myClusterName”).build(); TransportClient client = new PreBuiltTransportClient(settings);

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(“host1”), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(“host2”), 9300));

client.close();

##### 3、创建document

IndexResponse response = client.prepareIndex(“index”, “type”, “1”) .setSource(jsonBuilder() .startObject() .field(“user”, “kimchy”) .field(“postDate”, new Date()) .field(“message”, “trying out Elasticsearch”) .endObject() ) .get();

##### 4、查询document

GetResponse response = client.prepareGet(“index”, “type”, “1”).get();

##### 5、修改document

client.prepareUpdate(“index”, “type”, “1”) .setDoc(jsonBuilder()
.startObject() .field(“gender”, “male”) .endObject()) .get();

##### 6、删除document

DeleteResponse response = client.prepareDelete(“index”, “type”, “1”).get();

代码如下:

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;

/**

  • 员工增删改查的应用程序
  • @author Administrator / public class EmployeeCRUDApp {

    @SuppressWarnings({ “unchecked”, “resource” }) public static void main(String[] args) throws Exception {

     // 先构建client
     Settings settings = Settings.builder()
             .put("cluster.name", "elasticsearch")
             .build();
    
     TransportClient client = new PreBuiltTransportClient(settings)
             .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 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", "1")
            .setSource(XContentFactory.jsonBuilder()
                    .startObject()
                        .field("name", "jack")
                        .field("age", 27)
                        .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());  
}

}

```