Elasticsearch常用操作解析

创建Maven管理的Java项目

在pom.xml中添加依赖:

成都创新互联公司专注于企业营销型网站建设、网站重做改版、乐安网站定制设计、自适应品牌网站建设、H5开发商城建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为乐安等各大城市提供网站开发制作服务。

6.1.1


    org.elasticsearch.client
    transport
    ${es.version}

然后创建一个单元测试类ESApp:

private TransportClient client;

    @Before
    public void setUp() throws Exception {
        Settings settings = Settings.builder()
                .put("cluster.name", "mycluster")
                .put("client.transport.sniff", "true")//增加自动嗅探配置
                .build();

        client = new PreBuiltTransportClient(settings);
        client.addTransportAddress(new TransportAddress(InetAddress.getByName("10.8.24.94"), 9300));

        System.out.println(client.toString());
    }

运行后报错

java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactory

    com.fasterxml.jackson.core
    jackson-core
    2.9.3


    com.fasterxml.jackson.core
    jackson-databind
    2.9.3


    com.fasterxml.jackson.core
    jackson-annotations
    2.9.3

运行后成功拿到ES的client:

Elasticsearch常用操作解析

创建一个Index

@Test
    public void createIndex() {
        client.admin().indices().prepareCreate(INDEX).get();
        System.out.println("创建Index成功");
    }

删除一个Index

@Test
    public void deleteIndex() {
        client.admin().indices().prepareDelete(INDEX).get();
        System.out.println("删除Index成功");
    }

放入数据的三种方式

//不推荐使用,太繁琐拼json格式
 @Test
    public void createDoc() {
        String json = "{\"name\":\"若泽数据\"}";

        IndexResponse response = client.prepareIndex(INDEX, TYPE, "100")
                .setSource(json, XContentType.JSON)
                .get();
    }

    //推荐使用
    @Test
    public void test01() throws Exception {
        Map json = new HashMap();
        json.put("name", "ruozedata");
        json.put("message", "trying out Elasticsearch");

        IndexResponse response = client.prepareIndex(INDEX, TYPE, "101").setSource(json).get();
        System.out.println(response.getVersion());
    }

//推荐使用
    @Test
    public void test02() throws Exception {

        XContentBuilder builder = jsonBuilder()
                .startObject()
                .field("user", "ruoze")
                .field("postDate", new Date())
                .field("message", "trying out Elasticsearch")
                .endObject();

        IndexResponse response = client.prepareIndex(INDEX, TYPE, "102").setSource(builder).get();
        System.out.println(response.getVersion());
    }

拿到一条数据

@Test
    public void getDoc() {
        GetResponse response = client.prepareGet(INDEX, TYPE, "100").get();
        System.out.println(response.getSourceAsString());
    }

拿到多条数据

@Test
    public void getDocsByIds() {

        MultiGetResponse responses = client.prepareMultiGet()
                .add(INDEX, TYPE,"100")
                .add(INDEX, TYPE, "101", "102", "1000")
                .get();

        for (MultiGetItemResponse response : responses) {
            GetResponse res = response.getResponse();
            if (res.isExists()) {
                System.out.println(res);
            } else {
                System.out.println("没有这条数据");
            }

        }
    }

分享题目:Elasticsearch常用操作解析
标题来源:http://pwwzsj.com/article/poeiio.html