十次方第四天[Java项目]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yan12422/article/details/84653940

ElasticSearch

1.下载地址: https://www.elastic.co/cn/downloads/elasticsearch 选择对应的版本即可

2.启动:解压文件之后,找到bin目录,找到elasticsearch.bat,直接双击就可以了,启动一共是占了两个端口,一个是9300,一个是9200,如果是java开发的话用的是9300.其他的是9200,验证启动成功直接在浏览器输入http://127.0.0.1:9200能出来一些相关信息就说明是已经启动成功了

3.创建索引库:用put方式提交,访问 http://localhost:9200/tensquare_elasticsearch ,这样就创建了一个名称为tensquare_elasticsearc的索引库,请求返回的数据

4.添加文档(索引)操作 以post方式提交 http://localhost:9200/tensquare_elasticsearch/article body:

{
	"title":"java项目",
	"content":"黑马十次方"
}

返回结果如下

{
    "_index": "tensquare_elasticsearch",
    "_type": "article",
    "_id": "X2MfS2cBS3Rp8wJxTrVF",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

_id是由系统自动生成的

5.查询全部文档 查询某索引类型的群补数据 以get方式请求 http://localhost:9200/tensquare_elasticsearch/article/_search 返回结果如下

{
    "took": 59,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
            {
                "_index": "tensquare_elasticsearch",
                "_type": "article",
                "_id": "X2MfS2cBS3Rp8wJxTrVF",
                "_score": 1,
                "_source": {
                    "title": "java项目",
                    "content": "黑马十次方"
                }
            }
        ]
    }
}

6.修改操作 以put方式提交以下地址 http://localhost:9200/tensquare_elasticsearch/article/X2MfS2cBS3Rp8wJxTrVF 最后一个/后面是id,这里的修改操作,如果id没有的话就会去创键一个,

7.按id查询文档 以get方式请求 http://localhost:9200/tensquare_elasticsearch/article/1

8.按条件去查询 根据某个关键词去查询,以get方式提交 http://localhost:9200/tensquare_elasticsearch/article/_search?q=title:java

9.模糊查询 我们可以用*代表任意字符

http://localhost:9200/tensquare_elasticsearch/article/_search?q=title:*j*

10.删除操作 根据id去删除,用delete方式提交

http://localhost:9200/tensquare_elasticsearch/article/X2MfS2cBS3Rp8wJxTrVF

安装head插件

如果都是通过rest请求的方式使用elasticsearch有点麻烦,而且不够人性化,我们一般都会通过图形化界面实现日常的管理,最常用的就是head插件

1.下载head插件的地址

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

2.安装nodejs,安装cnpm

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

3.将grunt安装为全局命令,grunt是基于nodejs的构建工具,它可以自动执行你所设定的任务

npm install -g grunt-cli

4.直接构建项目

cnpm install
依赖下载完成之后
grunt server

5.启动成功后就可以访问9100了.但是链接不上我们本地的elasticsearch,需要解决跨域问题,在elas的安装目录下找到confg里面的elasticsearch.yml,加上两句命令

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

IK分词器

1.下载地址

https://github.com/medcl/elasticsearch-analysis-ik/releases

下载和自己版本对应的ik分词器,否则打不开

2.解压 解压完成后,把文件夹改成ik,放到es目录下的plugins文件夹中,重启es

3.自定义词库 在ik分词器的config目录下添加要自定义的dic文件,

4.测试有没有安装成功

http://localhost:9200/_analyze?analyzer=ik_smart&pretty=true&text=我数一二三木头人

如果没有报错就是说明成功了,报了400的说明版本不匹配或者是es版本更换成低的

elasticsearch与mysql的同步

logstash

1.logstash下载完成之后直接解压就可以使用,在bin目录下点击logstash.bat,会一闪而过,说明是已经启动了, 2.启动之后怎么验证启动成功了呢,打开cmd输入命令

logstash -e 'input { stdin{}} output { stdout{}}'

在控制台输入字符,随后就有日志出来,说明已经启动成功了, -e后面跟的是命令,-f是文件 3.mysql数据导入es 在logstash解压目录下创建一个文件夹aaa,名字随意,文件夹下放入mysql的驱动包和 创建mysql.conf,内容如下

input {
  jdbc {
	  # mysql jdbc connection string to our backup databse
	  jdbc_connection_string => "jdbc:mysql://192.168.254.128:3306/tensquare_article?characterEncoding=UTF8"
	  # the user we wish to excute our statement as
	  jdbc_user => "root"
	  jdbc_password => "root"
	  # the path to our downloaded jdbc driver  
	  jdbc_driver_library => "D:\TEN\logstash-5.6.8\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
	  # the name of the driver class for mysql
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  jdbc_paging_enabled => "true"
	  jdbc_page_size => "50"
	  #以下对应着要执行的sql的绝对路径。
	  #statement_filepath => ""
	  statement => "select id,title,content,state from tb_article"
	  #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ESIP地址与端口
	  hosts => "127.0.0.1:9200" 
	  #ES索引名称(自己定义的)
	  index => "tensquare_article"
	  #自增ID编号
	  document_id => "%{id}"
	  document_type => "article"
  }
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}

编辑完成之后检查没有什么问题,在命令行下执行

logstash -f ../aaa/mysql.conf

docker环境下安装es

(1)下载镜像

docker pull elasticsearch:5.6.8

(2)创建容器

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

(3)启动浏览器查看是否启动成功

http://你的ip:9200

(4)修改项目中的application.yml的ip (5)运行测试程序,发现会有一些报错,这个是因为es5之后默认不再开启远程链接,需要修改配置文件 (6)进入容器

docker exec -it tensquare_es /bin/bash

进入容器之后会发现里面有一些命令是没有的,ll,vi等好多都没有,这样我们只能通过宿主机中的某个文件来实现对配置容器的修改 (7)复制配置文件到宿主机

docker cp tensquare_es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

(8)停止和删除之前创建的容器

docker stop tensquare_es
docker rm tensquare

(9)重新执行创建命令

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8

(10)修改/usr/share/elasticsearch.yml

将transport.host: 0.0.0.0的注释打开,前面的#去掉,其作用是允许任何ip去访问

(11)重新启动es

docker restart tensquare_es

重启之后我们之后会发现重启失败了,这是为什么呢,是因为es在启动过程中会进行检查,比如最多打开的文件个数以及虚拟内存区域数量等等,如果你放开了此配置,意味着需要打开更多的文件以及虚拟内存,所有我们需要对系统进行调优

(12)一共修改两处 修改/etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536

nofile是单个进程允许打开的最大文件数,soft nofile是软限制,hard nofile是硬限制

修改/etc/sysctl.conf

vm.max_map_count=655360

限制一个进程可以拥有vma(虚拟内存区域)的数量 修改 完成后执行以下命令立即生效

sysctl -p

(13)重启虚拟机,重启容器,再次启动容器就可以进行远程访问了

docker环境下ik分词器的安装

(1)通过sftp将ik文件夹上传到虚拟机上

(2)将文件夹复制到容器内/usr/share/elasticsearch/plugins/

docker cp ik tensquare_es:/usr/share/elasticsearch/plugins/

(3)重启,即可加载ik分词器

大家需要十次方项目的视频可以关注我的微信公众号,

大家有需要项目视频的可以加我微信yan1242269186

猜你喜欢

转载自blog.csdn.net/yan12422/article/details/84653940
今日推荐