为增加搜索功能,最近在自己的服务器上部署elasticsearch,折腾一下,把注意的问题记录一下。

1.  因为最近的es5.5.2要求java1.8,所以确保java版本正确.

2. 我的服务器只有1G内存,如果使用默认elasticsearch设置,会出现内存不足的情况,所以需要把jvm的内存调小:

在elasticsearch-5.5.2/config/jvm.options内把jvm初始堆和最大使用内存大小都设为512m:

  1. -Xms512m
  2. -Xmx512m

这个时候可以正常启动es了。

以下部分是扩展.

3. 我的博客数据存在mysql,要把里面的数据同步给es索引,用到logstash-jdbc,这是一个单独的组件,最新也是5.5.2,同样的,把logstash 的jvm的内存调小:

在logstash-5.5.2/config/jvm.options 内设为如下:

  1. -Xms512m
  2. -Xmx512m

4. 在logstash-5.5.2/bin/下建立配置文件:jdbc.conf

  1. # The # character at the beginning of a line indicates a comment. Use
  2. # comments to describe your configuration.
  3. input {
  4.  
  5. jdbc {
  6. # mysql jdbc connection string to our backup databse 后面的test对应mysql中的test数据库
  7. jdbc_connection_string => "jdbc:mysql://localhost:3306/blog"
  8.  
  9. # the user we wish to excute our statement as
  10. jdbc_user => "root"
  11. jdbc_password => "密码"
  12.  
  13. # the path to our downloaded jdbc driver
  14. jdbc_driver_library => "/var/mysql-connector-java-5.1.44-bin.jar"
  15.  
  16. # the name of the driver class for mysql
  17. jdbc_driver_class => "com.mysql.jdbc.Driver"
  18. jdbc_paging_enabled => "true"
  19. jdbc_page_size => "50000"
  20.  
  21. #以下对应着要执行的sql的绝对路径。
  22. statement_filepath => "/var/ogstash-5.5.2/bin/jdbc.sql"
  23.  
  24. #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
  25. schedule => "* * * * *"
  26.  
  27. #设定ES索引类型
  28. type => "article"
  29. }
  30.  
  31. }
  32.  
  33. filter {
  34.  
  35. mutate {
  36. gsub => ["content", "(<.+?>)", ""]
  37. gsub => ["content", "&nbsp;", ""]
  38. }
  39. }
  40.  
  41. output {
  42. elasticsearch {
  43.  
  44. #ESIP地址与端口
  45. hosts => "localhost:9200"
  46.  
  47. #ES索引名称(自己定义的)
  48. index => "tornado-blog"
  49.  
  50. #自增ID编号
  51. document_id => "%{id}"
  52. }
  53. stdout {
  54. #以JSON格式输出
  55. codec => json_lines
  56. }
  57.  
  58. }

这里需要注意的是在filter里的配置,要把html标签去除掉再去给es索引。

其中,指定的jdbc.sql内容如下:

  1. select
  2. *
  3. from article where date_add(up_date, interval -8 hour) >= :sql_last_value

之所以要用date_add函数把时间差8个小时,是因为es里是用的utc标准时间,所以为了增加更新,需要把时间也变成utc时间,不然时间总是比上次同步的时间大,es会每次都会索引。

5. 启动es,logstash

  1. ./elasticsearch > log.txt 2>&1 &
  2. ./logstash -f jdbc.conf > log.txt 2>&1 &

之所以不用-d选项,是因为在使用中发现使用-d会使的服务器频繁使用swap分区,造成服务器反应慢,反而是这种&方式不会引起服务器变慢的问题.

部署elasticsearch遇到的问题的更多相关文章

  1. Docker部署Elasticsearch集群

    http://blog.sina.com.cn/s/blog_8ea8e9d50102wwik.html Docker部署Elasticsearch集群 参考文档: https://hub.docke ...

  2. 【原创】大数据基础之Ambari(2)通过Ambari部署ElasticSearch(ELK)

    ambari2.7.3(hdp3.1) 安装 elasticsearch6.3.2 ambari的hdp中原生不支持elasticsearch安装,下面介绍如何通过mpack方式使ambari支持el ...

  3. Azure vm 扩展脚本自动部署Elasticsearch集群

    一.完整过程比较长,我仅给出Azure vm extension script 一键部署Elasticsearch集群的安装脚本,有需要的同学,可以邮件我,我给你完整的ARM Template 如果你 ...

  4. Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...

  5. Centos8 Docker部署ElasticSearch集群

    ELK部署 部署ElasticSearch集群 1.拉取镜像及批量生成配置文件 # 拉取镜像 [root@VM-24-9-centos ~]# docker pull elasticsearch:7. ...

  6. 日志分析系统 - k8s部署ElasticSearch集群

    K8s部署ElasticSearch集群 1.前提准备工作 1.1 创建elastic的命名空间 namespace编排文件如下: elastic.namespace.yaml --- apiVers ...

  7. Docker 08 部署Elasticsearch

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  8. ES 02 - 部署Elasticsearch单机服务 + 部署中的常见问题

    目录 1 准备工作 1.1 安装JDK 1.2 下载安装包 1.3 创建elastic用户 2 启动ES服务 2.1 修改配置文件 2.2 启动服务 3 验证ES服务是否可用 4 关闭与重启服务 4. ...

  9. Linux服务器部署 Elasticsearch 成功,本机却访问不了

    Elasticsearch版本: elasticsearch- 服务器版本: CentOS release 6.8 (Final) 问题: Linux服务器上部署了 Elasticsearch 5.5 ...

随机推荐

  1. ADO.NET使用using关闭数据库连接

    using (SqlConnection conn = new SqlConnection(source)) { // open the connoction conn.Open(); // Do s ...

  2. web国际化,在不同的浏览环境,显示不同的语言

    所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言.假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回 ...

  3. PHP 常用函数总结(四)

    9.PHP常用判断函数 is_bool();//判断是否为布尔型 is_float(); //判断是否为浮点型 is_int(); //判断是否为整型 is_numeric(); //判断是否为数值型 ...

  4. Java多线程(三) —— 线程并发库之总体架构

    对java并发库一直觉得很神秘,决定好好研究一下. 参考文献: https://blog.csdn.net/hp910315/article/details/50963095 http://www.b ...

  5. 【CSS】规范大纲

    文件规范: 文件分类 : 通用类 :业务类. 文件引入:行内样式(不推荐):外联引入:内联引入.(避免使用Import引入) 文件本身:文件名. 编码:UTF-8. 注释规范: 块状注释:统一缩进,在 ...

  6. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    微信小程序前后台使用get方式传参时报错如图.但在微信开发平台和苹果测试都没事,在安卓手机上就报这个错,猜想原因是get传递了汉字的原因. 尝试了下在后台输出从前台获取的参数,但是后台什么也没有获取到 ...

  7. centos 7下ldap安装

    环境说明: 操作系统:CentOS Linux release 7.5.1804 (Core) LDAP:2.4.44 前提条件: 关闭防火墙.selinux,同时进行时钟同步. 其中XXX需要用域名 ...

  8. Maximum repetition substring POJ - 3693(重复次数最多的连续重复子串)

    这题和SPOJ - REPEATS 一样  代码改一下就好了 这个题是求这个重复子串,还得保证字典序最小 巧妙运用sa 看这个 https://blog.csdn.net/queuelovestack ...

  9. 纯css实现长宽等比例的div

    现代网站页面基本都需要响应式,一个div的长宽往往我们都设置为百分之多少,这个百分之是相对于父容器动态计算的 这样在浏览器宽度变化之后,我们的元素也能自动更新长宽.例如:我们在页面上摆了一个div,这 ...

  10. 【XSY1841】Intervals

    Description 在一个长度为m的序列中选出n个区间,这些区间互不包含,且至少有一个区间的左端点为x. 问有多少种方案,注意交换两个区间的顺序视为不同方案. ​ 答案很大,输出模10000000 ...