• 部署elasticsearch遇到的问题


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

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

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

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

    -Xms512m
    -Xmx512m

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

    以下部分是扩展.

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

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

    -Xms512m
    -Xmx512m

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

    # The # character at the beginning of a line indicates a comment. Use
    # comments to describe your configuration.
    input {
    
        jdbc {
            # mysql jdbc connection string to our backup databse  后面的test对应mysql中的test数据库
            jdbc_connection_string => "jdbc:mysql://localhost:3306/blog"
            
            # the user we wish to excute our statement as
            jdbc_user => "root"
            jdbc_password => "密码"
            
            # the path to our downloaded jdbc driver
            jdbc_driver_library => "/var/mysql-connector-java-5.1.44-bin.jar"
            
            # the name of the driver class for mysql
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            jdbc_paging_enabled => "true"
            jdbc_page_size => "50000"
            
            #以下对应着要执行的sql的绝对路径。
            statement_filepath => "/var/ogstash-5.5.2/bin/jdbc.sql"
            
            #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
            schedule => "* * * * *"
            
            #设定ES索引类型
            type => "article"
      }
        
    }
    
    filter {
    
       mutate {
             gsub => ["content", "(<.+?>)", ""]
             gsub => ["content", "&nbsp;", ""]
        }
    }
    
    output {
        elasticsearch {
        
            #ESIP地址与端口
            hosts => "localhost:9200"
            
            #ES索引名称(自己定义的)
            index => "tornado-blog"
            
            #自增ID编号
            document_id => "%{id}"
        }
        stdout {
            #以JSON格式输出
            codec => json_lines
        }
     
    }

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

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

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

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

    5. 启动es,logstash

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

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

  • 相关阅读:
    Git
    java类加载
    DES-加解密C语言实现
    Android消息队列初识 && ThreadLocl 简述
    DbUTils
    JDBC(二)
    jdbc工具类
    JDBC(一)
    数据库
    MySQL数据库学习: 01 —— 数据库的概述
  • 原文地址:https://www.cnblogs.com/cool-fire/p/7522321.html
Copyright © 2020-2023  润新知