elasticsearch学习(二)——基本配置

1.解压好压缩包进入bin目录输入elasticsearch启动,进入浏览器访问localhost:9200看是否成功
2.用PostMan的PUT请求创建索引库http://localhost:9200/articleindex
3.新建文档用POST请求 http://localhost:9200/articleindex/article

{
"title":"SpringBoot2.0",
"content":"发布啦"
}

4.查询全部文档,GET请求 http://127.0.0.1:9200/articleindex/article/_search
5.修改文档PUT请求 http://192.168.184.134:9200/articleindex/article/AWPKrI4pFdLZnId5S_F7(_id)

{
"title":"SpringBoot2.0正式版",
"content":"发布了吗"
}

如果在地址中的ID不存在,则会创建新文档
6.基本匹配查询(模糊查询),比如按标题查询:

http://localhost:9200/articleindex/article/_search?q=title:我是标题1

可以用*代表任意字符:

http://localhost:9200/articleindex/article/_search?q=title:*s*

7.删除文档,根据ID删除文档,比如删除ID为1的文档 DELETE方式提交:

http://localhost:9200/articleindex/article/1

8.安装head插件,然后插件目录下依赖,启动 grunt server,启动后浏览器访问http://localhost:9100/,但是连接没起作用,要解决es跨域问题,修改elasticsearch的配置,让其允许跨域访问,修改elasticsearch配置文件,config目录下:elasticsearch.yml,增加以下两句命令:

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

重启elasticsearch访问测试连接是否配置成功
9.IK分词器
默认的中文分词是将每个字看成一个词,这是不符合要求的,所以需要安装中文分词器来解决这个问题。安装步骤:

(1)先将其解压,将解压后的elasticsearch文件夹重命名文件夹为ik
(2)将ik文件夹拷贝到elasticsearch/plugins 目录下
(3)重新启动,即可加载IK分词器

IK提供了两个分词算法ik_smart 和 ik_max_word。其中 ik_smart 为最少切分,ik_max_word为最细粒度划分
自定义词库:

(1)进入elasticsearch/plugins/ik/config目录
(2)新建一个my.dic文件,编辑内容
(3)修改IKAnalyzer.cfg.xml(在ik/config目录下)
   编辑为:<entry key="ext_dict">my.dic</entry>

10.一些要记的:

    //Field域,对应列值,
    //是否索引(index= true),就看该域是否能被搜索(想要被搜索就要索引)
    //是否分词,就表示搜索的时候整体匹配还是单词匹配
    //是否存储,就是是否在页面上显示(实体写了几个字段就存几个,对应表里可能还有诶存的)
    @Field(index= true,analyzer="ik_max_word",searchAnalyzer="ik_max_word")
    private String title;//标题
    @Field(index= true,analyzer="ik_max_word",searchAnalyzer="ik_max_word")
    private String content;//文章正文
    private String state;//审核状态

11.Logstash
简介:Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件,可做数据库同步
安装:解压,进入bin目录,输入:

logstash -e 'input { stdin { } } output { stdout {} }'(直接执行指令可测试安装成功没有,输入啥就输出啥)

stdin,表示输入流,指从键盘输入stdout,表示输出流,指从显示器输出。
该命令常用,所以可以写到一个文件中,-e改成-f,跟着’文件相对路径’(如果文件在同一级,…-可以省略)
控制台随意输入字符,随后就有日志输出
12.MySQL数据导入Elasticsearch
(1)在logstash-5.6.8安装目录下创建文件夹mysqletc (名称随意)
(2)文件夹下创建mysql.conf (名称随意) ,内容如下:

input {
  jdbc {
	  # 要连接的mysql驱动,一般是微服务里.yml文件找
	  jdbc_connection_string => "jdbc:mysql://192.168.226.128:3306/tensquare_article?characterEncoding=UTF8"
	  # 数据库账号密码
	  jdbc_user => "root"
	  jdbc_password => "123"
	  # jdbc驱动位置  
	  jdbc_driver_library => "D:\My_IT\My_java_aboutDownload\elasticsearch\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
	  # 驱动名称,写死即可
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
                  #是否要分页
	  jdbc_paging_enabled => "true"
                   #要多少条内容
	  jdbc_page_size => "50"
	  #以下对应着要执行的sql的绝对路径。
	  #statement_filepath => ""
                    #在这直接写sql语句
	  statement => "SELECT id,title,content,state FROM tb_article"
	  #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ESIP地址与端口,就是要把上面数据更新到哪个elasticsearch中
	  hosts => "127.0.0.1:9200" 
	  #ES索引名称(自己定义的,索引库名称)
	  index => "tensquare_article"
	  #自增ID编号,这个id是上面sql的id
	  document_id => "%{id}"
                    #类型
	  document_type => "article"
  }
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}

(3)将mysql驱动包mysql-connector-java-5.1.46.jar拷贝至D:/logstash-
5.6.8/mysqletc/ 下 。D:/logstash-5.6.8是你的安装目录
(4)在bin目录下命令行下执行

logstash -f ../mysqletc/mysql.conf

13创建容器
docker run -di --name=tensquare_es -p 9200:9200 ‐p 9300:9300
elasticsearch:5.6.8
14.进入容器elasticsearch所在的目录为/usr/share/elasticsearch ,进入config看到了配置文件elasticsearch.yml,需要以文件挂载的方式创建容器才行,这样我们就可以通过修改宿主机中的某个文件来实现对容器内配置文件的修改,拷贝配置文件到宿主机首先退出容器,然后执行命令:

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

停止和删除原来创建的容器
docker stop tensquare_elasticsearch
docker rm tensquare_elasticsearch
重新执行创建容器命令
修改/usr/share/elasticsearch.yml 将transport.host: 0.0.0.0 前的#去掉后保
存文件退出。其作用是允许任何ip地址访问elasticsearch .开发测试阶段可以这么做,生
产环境下指定具体的IP
最后重启启动,会启动失败,需要调优,修改/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
重新启动虚拟机,再次启动容器,发现已经可以启动并远程访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值