zoukankan      html  css  js  c++  java
  • elasticsearch 和Ik 以及 logstash 同步数据库数据

    前文章有提到如何安装es

    ik是默认的中文分词是将每个字看成一个词,这显然是不符合要求的,所以我们需要安装中
    文分词器来解决这个问题。
    IK分词是一款国人开发的相对简单的中文分词器。虽然开发者自2012年之后就不在维护
    了,但在工程应用中IK算是比较流行的一款!我们今天就介绍一下IK中文分词器的使用。

    下面介绍安装ik插件和使用

    下载ik压缩包地址https://files.cnblogs.com/files/blackCatFish/elasticsearch-analysis-ik-5.6.8(1).zip 

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

    IK提供了两个分词算法ik_smart 和 ik_max_word
    其中 ik_smart 为最少切分,ik_max_word为最细粒度划分
    我们分别来试一下
    (1)最小切分:在浏览器地址栏输入地址http://99.47.133.165:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是程序员

    结果如下:

    {
      "tokens" : [
        {
          "token" : "我",
          "start_offset" : 0,
          "end_offset" : 1,
          "type" : "CN_CHAR",
          "position" : 0
        },
        {
          "token" : "是",
          "start_offset" : 1,
          "end_offset" : 2,
          "type" : "CN_CHAR",
          "position" : 1
        },
        {
          "token" : "程序员",
          "start_offset" : 2,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 2
        }
      ]
    }

    (2)最细切输入:http://99.47.133.165:9200/_analyze?analyzer=ikmax_word&pretty=true&text=我是程序员

    结果:

    {
      "tokens" : [
        {
          "token" : "我",
          "start_offset" : 0,
          "end_offset" : 1,
          "type" : "CN_CHAR",
          "position" : 0
        },
        {
          "token" : "是",
          "start_offset" : 1,
          "end_offset" : 2,
          "type" : "CN_CHAR",
          "position" : 1
        },
        {
          "token" : "程序员",
          "start_offset" : 2,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 2
        },
        {
          "token" : "程序",
          "start_offset" : 2,
          "end_offset" : 4,
          "type" : "CN_WORD",
          "position" : 3
        },
        {
          "token" : "员",
          "start_offset" : 4,
          "end_offset" : 5,
          "type" : "CN_CHAR",
          "position" : 4
        }
      ]
    }

    可以自定义分词

    默认的分词并没有识别“博客园是一个词。如果我们想让系统识别博客园”是一个
    词,需要编辑自定义词库。
    步骤:
    1)进入elasticsearch/plugins/ik/config目录
    2)新建一个my.dic文件,编辑内容:
    博客园

    修改IKAnalyzer.cfg.xml(在ik/config目录下)

    <properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!‐‐用户可以在这里配置自己的扩展字典 ‐‐>
    <entry key="ext_dict">my.dic</entry>
    <!‐‐用户可以在这里配置自己的扩展停止词字典‐‐>
    <entry key="ext_stopwords"></entry>
    </properties>

    重启测试分词即可

    logstash同步数据库:

    步骤下载logstash https://www.elastic.co/cn/downloads/logstash

    2. 解压logstash

    tar -zxvf logstash-6.6.0.tar.gz

    3. 在logstash 目录创建 mysql 文件夹

    [root@VM_0_17_centos logstash-6.6.0]# mkdir mysql

    将数据库驱动放入这个文件夹下面

    5. 在config 目录下创建 mysql.conf 文件

    6. mysqltoes.conf 配置

    input {
    jdbc {
    # mysql jdbc connection string to our backup databse 后面的test对应mysql中的test数据库
    jdbc_connection_string =>"jdbc:mysql://99.47.133.166:3306/pmap?characterEncoding=UTF8"
    # the user we wish to excute our statement as
    jdbc_user => "root"
    jdbc_password => "3edc$RFV5tgb"
    # the path to our downloaded jdbc driver
    jdbc_driver_library => "/usr/local/logstash-6.6.0/mysql/mysql-connector-java-5.1.44.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 => "SELECT id,title,comment,digest,cover,issueTime,isPublic,pubStatus FROM asset_article"
    #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为
    #每分钟都更新
    schedule => "* * * * *"
    }
    }
    output {
    elasticsearch {
    #ESIP地址与端口
    hosts => "99.47.133.165:9200"
    #ES索引名称(自己定义的)
    index => "asset_article"
    #自增ID编号
    document_id => "%{id}"
    document_type => "article"
    }
    stdout {
    #以JSON格式输出
    codec => json_lines
    }
    }

    7. 启动 logstash 

      前台启动:

    [root@VM_0_17_centos bin]# ./logstash -f ../config/mysqltoes.conf

     

      后台启动:

    [root@VM_0_17_centos bin]# nohup  ./logstash -f ../config/mysqltoes.conf >logstash.log &

     

    启动成功:

    可以通过head chrome 插件查看数据是否是一分钟同步  插件如果不能直接拖入将cxr后缀改zip解压选择加载已解压的扩展程序即可

  • 相关阅读:
    【原创】cs+html+js+css模式(一):初识新模式
    【原创】cs+html+js+css模式(三):RemoteCallHandler详解
    删除表数据
    【原创】cs+html+js+css模式(二):webconfig中的设置
    silverlight动画
    rdlc报表表达式应用(字符串和转换)
    Accordion控件制作下拉面板菜单(静态数据)
    silverlight三种布局
    Sys.UI.DomElement
    Accordion控件动态数据绑定案例
  • 原文地址:https://www.cnblogs.com/blackCatFish/p/11800430.html
Copyright © 2011-2022 走看看