当前位置: 澳门新濠3559 > 编程 > 正文

下面介绍es的安装以及head插件的安装,先入为主

时间:2019-10-06 23:57来源:编程
elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。 下载安装ES 1.官网下载地址:https://www.ela

elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。

下载安装ES

1.官网下载地址:https://www.elastic.co/downloads/elasticsearch 目前最新本6.0 windows上面直接选择zip压缩包 注意:要求jdk1.8
2.安装
解压缩下载下来的包-进入bin目录-运行elasticsearch.bat文件 访问成功表示elasticsearch安装成功

环境
Windows7
JDK-1.8
ElasticSearch-5.5.0
node-v8.1.2-x64.msi
git客户端

澳门新濠3559 1

es是一个高度可扩展的开源全文搜索和分析引擎,可以快速的、近实时地对大数据进行存储、搜索和分析,用来支撑复杂的数据搜索需求和企业级应用。简单来说,它是一个搜索引擎,可以实现全文搜索,功能类似于lucene和solr。

java连接ES

1.添加依赖

<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.6.3</version>
</dependency>

<dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.6.3</version>
</dependency>

2.java code

@Test

public voidtest1() {

try{
//集群名称可以在配置文件设置
Settings settings =Settings.builder().put("cluster.name","my-application").build();

TransportClient client =newPreBuiltTransportClient(settings)

.addTransportAddress(newInetSocketTransportAddress(InetAddress.getByName("localhost"),9300));

IndexResponse response = client.prepareIndex("item","itemList","830972")

.setSource(jsonBuilder()

.startObject()

.field("productId","830972")

.field("salePrice","254")

.field("productName","254")

.field("sub_title","524")

.field("productImageBig","252")

.field("category_name","2542")

.endObject()

).get();

//查询

GetResponse getResponse = client.prepareGet("item","itemList","830972").get();

String json = getResponse.getSourceAsString();

System.out.println(json);

client.close();

}catch(Exception e) {

e.printStackTrace();

}

}

windows用户建议安装个

diary_report.jpg

下面介绍es的安装以及head插件的安装,都是在Windows上的安装。

head可视化插件安装

说明:es 6.0版本不支持命令行直接安装,需要依赖node环境(可自行百度安装)
1.安装grunt

npm install -g grunt --registry=https://registry.npm.taobao.org

2.通过git下载elasticsearch-head源码

yum install –y git
git clone https://github.com/mobz/elasticsearch-head.git

3.修改head源码,默认是localhost,本地机器不用修改。head/Gruntfile.js

connect: {
    server: {
        options: {
            port: 9100,
            hostname: '*',
            base: '.',
            keepalive: true
        }
    }
}

4.head插件连接地址head/_site/app.js

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

5.修改es配置文件

#增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"

6.正常其启动elasticsearch
7.进入elasticsearch-head根目录,执行npm install

npm install

8.完成后启动elasticsearch-head,在源码根目录执行

grunt server

澳门新濠3559 2

image.png

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

TortoiseGit 客户端 ,傻瓜式Git(我能说我也在用吗。哈哈。这么简单的东西不用才怪)

Interesting things

1、es的安装:

、下载:

、安装:安装很简单,只需解压即可。解压后进入bin目录,运行里面的elasticsearch.bat,即可运行es。、

、注册为Windows服务:每次启动都要运行这个文件很麻烦,可以将es注册为windows的本地。在cmd命令窗口进入es的bin目录,然后执行如下命令:elasticsearch-service.bat install执行成功后就可以看到es的服务了:

澳门新濠3559 3image.png

、访问es:启动redis服务后,访问localhost:9200即可看到如下界面:

澳门新濠3559 4image.png

nodejs 8.1.2以上的版本都已经自带了npm

What did you do today

2、head插件的安装:

head插件可以很方便的操作es,head插件与es的关系就像navicat与MySQL数据库的关系,不过head插件的界面也是通过访问网址浏览的。、下载head插件:

澳门新濠3559 5image.png下载好上图这个解压。、安装node.js: -v`若出现node.js的版本信息,则安装成功。

、安装grunt:运行head需要借助grunt命令,所以要安装。在cmd窗口进入node.js安装的根目录,然后执行npm install -g grunt -cli

、安装pathomjs:在cmd命令窗口进入head插件解压后的根目录,然后执行npm install

、连接es:在es的安装根目录的config目录下有elasticsearch.yml,在此文件中添加如下内容:

澳门新濠3559 6image.png

、运行head:在cmd命令窗口进入head插件解压后的根目录,然后执行grunt server,如下图就启动成功。

澳门新濠3559 7image.png然后访问localhost:9100看到如下画面就安装成功。澳门新濠3559 8image.png

点我下载源码。**1、添加依赖:**build.gradle:

dependencies { compile('org.springframework.boot:spring-boot-starter-data-elasticsearch') //集成es还需要这个依赖,不然会报classNotfound的错误 compile('net.java.dev.jna:jna:4.3.0') compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test')}

以上是整个项目用到的依赖,也就是说,集成es只需要data-elasticsearchjna依赖。

2、实体层:*EsBlog.java:*

import java.io.Serializable;import org.springframework.data.annotation.Id;import org.springframework.data.elasticsearch.annotations.Document;@Document(indexName = "blog",type = "blog")//elasticsearch的注解public class EsBlog implements Serializable { private static final long serialVersionUID = 4564729518133694581L; @Id private String id; private String title; private String summary; private String content;}

3、repository:*EsBlogRepository.java:*

import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import com.zhu.estest.entity.EsBlog;public interface EsBlogRepository extends ElasticsearchRepository<EsBlog, String> { /** * 分页查询博客 * @param title * @param summary * @param content * @param pageable * @return */ Page<EsBlog> findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(String title,String summary,String content,Pageable pageable);}

这里就定义了一个方法,方法名非常长,它也和jpa一样,按照规则定义方法就不用自己去实现。这个方法就是分页查找包含指定title或summary或content的内容。

4、junit测试:*EsBlogRepositoryTest.java:*

@RunWith(SpringRunner.class)@SpringBootTestpublic class EsBlogRepositoryTest { @Autowired private EsBlogRepository esBlogRepository; @Before public void initRepository() { //清除所有数据 esBlogRepository.deleteAll(); //存入数据 esBlogRepository.save(new EsBlog("登鹳雀楼","王之涣的诗", "白日依山尽,黄河入海流。欲穷千里目,更上一层楼。")); esBlogRepository.save(new EsBlog("相思","王维的诗", "红豆生南国,春来发几枝。愿君多采撷,此物最相思。")); esBlogRepository.save(new EsBlog("静夜思","李白的诗", "床前明月光,疑是地上霜。举头望明月,低头思故乡。")); } @Test public void test() { Pageable pageable = new PageRequest; String title = "思"; String summary = "相思"; String content = "相思"; Page<EsBlog> page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining( title, summary, content, pageable); System.out.println(page.getTotalElements; for(EsBlog blog : page.getContent { System.out.println; } }}

这个测试类先往es中添加了三首唐诗作为数据,然后调用repository中的方法,查找title中含有“思”字或者summary中含有“相思”或者content中含有“相思”的内容。理论上应该返回除了登鹳雀楼以外的两条数据。

澳门新濠3559 9image.png

运行junit确实返回两条数据。

5、controller层:*EsBlogController.java:*

@RestController@RequestMappingpublic class EsBlogController { @Autowired private EsBlogRepository esBlogRepository; @GetMapping public List<EsBlog> list(@RequestParam String title, @RequestParam("summary") String summary, @RequestParam("content") String content, @RequestParam(value="pageIndex",defaultValue="0") int pageIndex, @RequestParam(value="pageSize",defaultValue="10") int pageSize){ Pageable pageable = new PageRequest(pageIndex, pageSize); //数据是在junit测试中初始化的 Page<EsBlog> page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining( title, summary, content, pageable); return page.getContent(); }}

在浏览器中访问:

澳门新濠3559 10image.png

测试通过。

本文提供的es以及head插件的安装是在Windows上的安装,Linux和mac可能会有不同。至于springboot集成es,主要就是添加两个依赖,然后repository继承ElasticsearchRepository即可。ElasticsearchRepository接口封装了一些操作es的方法,我们直接调用就行,或者根据命名规则定义的方法,也不用自己实现,就类似于springData Jpa。

jdk 和nodejs安装不想说了 (网上教程一大堆)

先入为主

ElasticSearch Head是什么?

ElasticSearch Head是集群管理、数据可视化、增删查改、查询语句可视化工具。

以上内容属于个人笔记整理,如有错误,欢迎批评指正!

设置下

安装

  • 在https://github.com/mobz/elasticsearch-head下载elasticsearch-head-master.zip

  • 解压elasticsearch-head-master.zip到/usr/local/fast/

unzip elasticsearch-head-master.zip -d /usr/local/fast/

澳门新濠3559,

澳门新濠3559 11

image.png

  • 在plugins目录下创建head。把

mkdir -p /usr/local/fast/elasticsearch-6.1.1/plugins/head/

  • 把刚才解压的elasticsearch-head-master文件夹下的所有的文件拷贝到/plugins/head/下。
![](https://upload-images.jianshu.io/upload_images/4636177-256ba7414976d7cb.png)

image.png
  • 我们可以通过Jps命令(java virtual machine process status tool 是jdk1.5提供的一个现实当前所有java进程pid的命令),查看ElasticSearch进程号,然后kill掉它。

  • 重启elasticsearch,抛出了“java.lang.IllegalArgumentException: property [elasticsearch.version] is missing for plugin [head]”异常。

[2018-01-08T16:51:09,225][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: property [elasticsearch.version] is missing for plugin [head]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.1.1.jar:6.1.1]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.1.1.jar:6.1.1]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.1.1.jar:6.1.1]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.1.1.jar:6.1.1]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.1.1.jar:6.1.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.1.1.jar:6.1.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.1.1.jar:6.1.1]
Caused by: java.lang.IllegalArgumentException: property [elasticsearch.version] is missing for plugin [head]
    at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:144) ~[elasticsearch-6.1.1.jar:6.1.1]
  • 问题所在是elasticsearch-head-master解压后的内容不能放在elasticsearch的plugins目录下,所以我们删除到plugins目录下的head。

rm -rf head

澳门新濠3559 12

image.png

  • 更操蛋的是,我们竟然还没有安装elasticsearch-head,我们只是下了安装包,但是没有安装。我们需要node.js环境

wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
[图片上传失败...(image-87af7d-1515403754611)]

  • 在/usr/local/目录下创建nodejs文件夹。
![](https://upload-images.jianshu.io/upload_images/4636177-37710989db769e96.png)

image.png
  • 把node-v4.4.7-linux-x64.tar.gz解压到/usr/local/nodejs。

  • 配置环境变量,编辑/etc/profile添加以下内容,然后执行source /etc/profile,我们接着就可以查看node.js的版本号了。

NODE_HOME=/usr/local/nodejs/node-v4.4.7-linux-x64
PATH=$PATH:$NODE_HOME/bin
NODE_PATH=$NODE_HOME/lib/node_modules
export NODE_HOME PATH NODE_PATH

澳门新濠3559 13

image.png

  • 安装grunt(grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等工作,elasticsearch-head插件就是通过grunt启动的)。进入/usr/local/fast/elasticsearch-head-master/目录下进行安装。安装完毕,我们可以检查是否安装成功。

npm install -g grunt-cli
grunt -version

澳门新濠3559 14

image.png

  • 修改elasticsearch-head-master文件下的Gruntfile.js文件中,添加一行"hostname: '0.0.0.0',"
![](https://upload-images.jianshu.io/upload_images/4636177-a635f686b52fa92b.png)

image.png
  • 在elasticsearch-head-master目录下

npm install

澳门新濠3559 15

image.png

  • 但是安装的太慢了,我不想吐槽了。我们需要将npm换个镜像。

npm install -g cnpm --registry=https://registry.npm.taobao.org

澳门新濠3559 16

image.png

  • 我们再来安装elasticsearch-head-master.我们用cnpm代替npm

cnpm install

澳门新濠3559 17

image.png

  • 安装完毕后,会生成一个node_modules文件夹。
![](https://upload-images.jianshu.io/upload_images/4636177-3d8bc1f754e1e28a.png)

image.png
  • 我们还要修改elasticsearch.yml,具体如下。
#集群的名字 
cluster.name:   es_cmazxiaoma_cluster
#节点名字   
node.name:      node-1
#数据存储目录(多个路径)
path.data:      /home/elasticsearch/data
#日志目录     
path.logs:      /home/elasticsearch/logs
#本机的ip地址
network.host:   192.168.12.6
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts:       ["192.168.12.6"]
#设置节点间tcp端口(集群),默认9300
transport.tcp.port:     9300
#监听端口(默认) 
http.port:      9200
#增加参数,使head插件可以访问es
http.cors.enabled:      true
http.cors.allow-origin: "*"
  • 默认情况下,elasticsearch在elasticsearch-head连接的端口9200上公开一个http rest API。当不作为elasticsearch的插件运行时,您必须在elasticsearch中启用CORS,否则您的浏览器将拒绝看起来不安全的请求。看elasticsearch配置中:加http.cors.enabled:true,您还必须设置http.cors.allow-origin因为默认情况下不允许来源。http.cors.allow-origin:"*"是一个合法的值,但是它被认为是一个安全风险,因为你的集群是开放式的。

  • 运行elasticsearch-head

grunt server

澳门新濠3559 18

image.png

  • 忘记了,elasticsearch-head web端口是9100。如果我们想通过浏览器去访问它,必须在防火墙添加9100端口策略。
![](https://upload-images.jianshu.io/upload_images/4636177-374d365783bf01e5.png)

image.png
  • 访问192.168.12.6:9100
![](https://upload-images.jianshu.io/upload_images/4636177-9759478f16e073ee.png)

image.png
  • 启动elasticsearch。
![](https://upload-images.jianshu.io/upload_images/4636177-95a5b33307c10ed8.png)

image.png
  • 我们来通过elasticsearch-head来连接elasticsearch。

因为head插件可以对数据进行增删查改,所以生产环境尽量不要使用,最少要限制ip地址。尽量不要使用

修改如下即可: 路径建议和nodejs的安装目录放在同一个目录下

Summary

下一篇讲head插件的具体使用和
elasticsearch-analysis-ik分词插件。

npm config set cache "D:nodejsnode_cache"

npm config set prefix "D:nodejsnode_global"

博主截下自己的安装目录

澳门新濠3559 19

image.png

澳门新濠3559 20

这个是node_global目录

添加环境变量 path 加上 D:nodejsnode_global(这里的路径和上面的要对应,就怕小白乱复制) 方便后面调用grunt

下载Elasticsearch 5.1.1

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

zip和tar格式是各种系统都通用的,解压之后启动Elasticsearch即可。

安装grunt

npm install -g grunt-cli

-g代表全局安装。安装路径为

D:nodejsnode_global(你上面设置的全局路径)

,安装完成后检查一下:

先查看你的node_global目录下面有没有grunt.cmd命令

如果有但是提示grunt不是可运行的命令,自己设置下path变量

澳门新濠3559 21

image.png

注意这里安装的时候路径一定要切换到 grunt-cli 文件夹下面

这些是Grunt file.js中引用的,分别下载。ok

npm install grunt-contrib-copy

npm install grunt-contrib-concat

npm install grunt-contrib-uglify

  npm install grunt-css

把head插件的源码Git clone下来:

        git clone git://github.com/mobz/elasticsearch-head.git

没装git的自己去下载

https://github.com/mobz/elasticsearch-head

修改head源码

由于head的代码还是2.6版本的,直接执行有很多限制,比如无法跨机器访问。因此需要用户修改两个地方:

目录:head/Gruntfile.js:

connect: {
  server: {
          options: {
        port: 9100,
        hostname: '*',
        base: '.',
        keepalive: true
    }
}

}

增加hostname属性,设置为*

修改连接地址:

目录:head/_site/app.js

修改head的连接地址:

  this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

把localhost修改成你es的服务器地址,如:

    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://10.10.10.10:9200";

运行head

修改elasticsearch的参数

修改一下es使用的参数。编辑config/elasticsearch.yml:

# 换个集群的名字,免得跟别人的集群混在一起
cluster.name: es-5.0-test

# 换个节点名字
node.name: node-101

# 修改一下ES的监听地址,这样别的机器也可以访问
network.host: 0.0.0.0

# 默认的就好
http.port: 9200

# 增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"  

注意,设置参数的时候:后面要有空格!

开启ES-5.0.0:

  D:ElasticSearch-5.0.0binelasticsearch.bat

然后在head源码目录中,执行npm install 下载的包:

npm install

初次运行安装可能会报警告或错误。可以重新运行一次npm install。

最后,在head源代码目录下启动nodejs:

  grunt server

效果如图:

澳门新濠3559 22

image.png

这个时候,访问

http://localhost:9100

就可以访问head插件了:

有问题留言,博主可能会忘了什么没写上去

楼主的Github,很多是共享项目

GitHub:https://github.com/JoeyBling

编辑:编程 本文来源:下面介绍es的安装以及head插件的安装,先入为主

关键词: 澳门新濠3559