Elasticsearch5和head最新插件学习,JavaAPI demo

本文是在window10下使用

1.elasticsearch安装 使用

1.1.下载地址:https://www.elastic.co/downloads/elasticsearch

1.2. 选择zip文件,下载解压缩到 C:\elasticsearch-5.4.1

1.3. 修改配置文件

 为了允许elasticsearch-head运行时的跨域, 打开C:\elasticsearch-5.4.1\config中的elasticsearch.yml文件,文件末尾添加

# allow origin
http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name 可修改集群名称

node.name 节点名称

network.host ES的监听地址,修改为0.0.0.0 别的机器可访问

http.port: 端口号

1.4.启动elastic,打开cmd   ——》 cd C:\elasticsearch-5.4.1\bin ——》elasticsearch.bat

1.5. 浏览器打开 http://localhost:9200/ 即可看到成功运行的JSON页面

更多配置参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html

2.head可视化插件安装

1. Node.js 下载地址 https://nodejs.org/en/

 傻瓜式安装,cmd 测试下是否安装成功 CMD ——》 node -v 

 

C:\Users\zhangmy>node -v
v8.1.2

2. 安装grunt 

grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.0里的head插件就是通过grunt启动的。因此需要安装grunt:

路径切换到nodejs的安装目录下

C:\Users\zhangmy>cd C:\Program Files\nodejs
C:\Program Files\nodejs>npm install -g grunt-cli
C:\Users\zhangmy\AppData\Roaming\npm\grunt -> C:\Users\zhangmy\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt
+ grunt-cli@1.2.0
added 16 packages in 5.931s

npm install -g grunt-cli

-g代表全局安装。安装路径为C:\Users\yourname\AppData\Roaming\npm,并且自动加入PATH变量。安装完成后检查一下:

 

C:\Program Files\nodejs>grunt -version
grunt-cli v1.2.0

3. 下载head

官网github地址: https://github.com/mobz/elasticsearch-head

git clone https://github.com/mobz/elasticsearch-head 到本地

进入head下载目录,执行npm install 下载的包(如果失败,可重新运行一次),最后启动nodejs服务 grunt server 
C:\Users\zhangmy>cd H:\work\project\elasticsearch-head
H:\work\project\elasticsearch-head>npm install
npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression

up to date in 1.51s

H:\work\project\elasticsearch-head>grunt server
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

访问 http://localhost:9100 就可以访问head插件了:

 

3. head插件学习

http://mobz.github.io/elasticsearch-head/

1.概览

这个页面可以看到基本的分片的信息,比如主分片、副本分片等等,以及多少分片可用。

上方elasticsearch是集群的名称,颜色表示集群的健康状态:

绿色表示主分片和副本分片都可用;
黄色表示只有主分片可用,没有副本分片;
红色表示主分片中的部分索引不可用,但是不耽误某些索引的访问。

2.索引

可创建索引,设置分片数量,副本数量等

3.数据浏览

可以每个索引有哪些字段,存储了哪些数据

4.基本查询(类似CMS系统的简单查询)

5.复合查询

这里可使用restful风格对数据进行增删改查操作,具体操作可参考 http://blog.csdn.net/wuyzhen_csdn/article/details/51586082

GET格式:index/_type/_id

4. JDk8 +  elasticsearch5.4.1 完成新增索引

非常详细的官方JAVA API文档

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html

gradle引入jar包

 

    compile('org.elasticsearch:elasticsearch:5.4.1')
    compile('org.elasticsearch.client:transport:5.4.1')
    compile('org.apache.logging.log4j:log4j-api:2.8.2')
    compile('org.apache.logging.log4j:log4j-core:2.8.2')

 

 

 

 

 

 

package com.wdletu.travel.admin;


import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by zhangmy on 2017/6/20.
 */
public class Test {
    public static void main(String[] args) throws Exception {
        // on startup

        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
        List<String> jsondata = getInitJsonData();
        for (int i = 0; i < jsondata.size(); i++) {
            IndexResponse response = client.prepareIndex("blog", "article").setSource(jsondata.get(i)).get();
            if (response.status()== RestStatus.CREATED) {
                System.out.println("创建成功!");
            }

        }
        client.close();

    }
    // Java实体对象转json对象
    public static String model2Json(Blog blog) throws Exception {
        String jsonData = null;
        XContentBuilder builder = XContentFactory.jsonBuilder()
                .startObject()
                .field("id", blog.getId())
                .field("title", blog.getTitle())
                .field("posttime", blog.getPosttime())
                .field("content", blog.getContent())
                .endObject();
        jsonData = builder.string();
        return jsonData;
    }

    public static List<String> getInitJsonData() throws Exception {
        List<String> list = new ArrayList<String>();
        String data1 = model2Json(new Blog(1, "git简介", "2016-06-19", "SVN与Git最主要的区别..."));
        String data2 = model2Json(new Blog(2, "Java中泛型的介绍与简单使用", "2016-06-19", "学习目标 掌握泛型的产生意义..."));
        String data3 = model2Json(new Blog(3, "SQL基本操作", "2016-06-19", "基本操作:CRUD ..."));
        String data4 = model2Json(new Blog(4, "Hibernate框架基础", "2016-06-19", "Hibernate框架基础..."));
        String data5 = model2Json(new Blog(5, "Shell基本知识", "2016-06-19", "Shell是什么..."));
        list.add(data1);
        list.add(data2);
        list.add(data3);
        list.add(data4);
        list.add(data5);
        return list;
    }
}
class Blog {
    private Integer id;
    private String title;
    private String posttime;
    private String content;

    public Blog() {
    }

    public Blog(Integer id, String title, String posttime, String content) {
        this.id = id;
        this.title = title;
        this.posttime = posttime;
        this.content = content;
    }
    //setter and getter
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getPosttime() {
        return posttime;
    }

    public void setPosttime(String posttime) {
        this.posttime = posttime;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

 

 

 

 

 

感谢分享,参考网址http://blog.csdn.net/yx1214442120/article/details/55102298

http://www.cnblogs.com/xing901022/p/5469338.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值