Elasticsearch安装和基本使用+数据同步

9 篇文章 0 订阅
4 篇文章 0 订阅

楼主也是最近刚使用Elasticsearch如有错误欢迎指出及时更改

  • 使用Elasticsearch前先确认本机是否已经安装了jdk   命令: java -version
# 以下安装成功
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
  • 下载Elasticsearch此处我们下载Linux版本
  1. 官网:  https://www.elastic.co/cn/products/      下载地址:  https://www.elastic.co/cn/downloads/elasticsearch
  2. 下载完是elasticsearch-7.5.1-linux-x86_64.tar.gz文件 解压文件:  tar -zxvf elasticsearch-7.5.1-linux-x86_64.tar.gz
  3. 重命名解压文件为ES进入到ES文件夹下   执行 ./bin/elasticsearch    关注打印的日志中几个关键字initialized   starting ...
  4. 出现started的时候说明启动成功  本地浏览器访问 localhost:9200  返回json数据启动成功    接下来进行配置
  • 配置远程访问 vim config/elasticsearch.yml   (因为我是在云上操作自己本机测试可以忽略)
# 注释解开改为自己本机的ip地址
network.host: 127.0.0.1   # you_ip
# 此处注释解开
cluster.initial_master_nodes: ["node-1", "node-2"]

# 文件最后添加  注意冒号后面要空格
http.cors.enabled: true
http.cors.allow-origin: "*"
  • 为了便于我们浏览查看此处我用到elasticsearch-head
  1. github上搜索elasticsearch-head  下载mobz/elasticsearch-head
  2. cd elasticsearch-head
  3. npm install
  4. npm run start
  5. open http://localhost:9100/
  6. 连接you_ip:9200
  • 远程访问you_ip:9200返回json数据 服务正常启动继续配置elasticsearch.yml
# 因为支持分布式集群便于管理配置你的主ES
cluster.name: esserver
node.name: master
node.master: true
  • 此处是集群配置  如果不需要集群以下不用配置 
# 此处集群配置随从ES 同样在子ES中配置config/elasticsearch.yml
network.host: 127.0.0.1   # 还是你的IP

http.port: 8200           # 不要和主IP冲突

cluster.initial_master_nodes: ["node-1","node-2"]   # 解开注释

# 指定到主ES
cluster.name: esserver
node.name: slave1
discovery.zen.ping.unicast.hosts: ["192.168.0.52"]

以上整个是一个安装及配置的过程 接下来是简单使用

  • 导入Elasticsearch数据 需要用到两个插件安装非常简单但是可能需要梯子
  1. 官网下载logshtash 下载地址: https://www.elastic.co/cn/downloads/logstash
  2. 解压cd到文件bin目录
  3. 安装logstash-input-jdbc插件 ./logstash-plugin install logstash-input-jdbc
  • 在解压的logstash的config文件夹下新建jdbc.conf,配置内容如下(此处我是从其他网页上复制的原网页没找到如有版权及时联系删除)
# 输入部分
input {
  stdin {}
  jdbc {
    # mysql数据库驱动
    jdbc_driver_library => "/usr/local/logstash-6.4.2/config/mysql-connector-java-5.1.30.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # mysql数据库链接,数据库名
    jdbc_connection_string => "jdbc:mysql://localhost:3306/octopus"
    # mysql数据库用户名,密码
    jdbc_user => "root"
    jdbc_password => "12345678"
    # 设置监听间隔  各字段含义(分、时、天、月、年),全部为*默认含义为每分钟更新一次
    schedule => "* * * * *"
    # 分页
    jdbc_paging_enabled => "true"
    # 分页大小
    jdbc_page_size => "50000"
    # sql语句执行文件,也可直接使用 statement => 'select * from t_employee'
    statement_filepath => "/usr/local/logstash-6.4.2/config/jdbc.sql"
    # elasticsearch索引类型名
    type => "t_employee"
  }
}

# 过滤部分(不是必须项)
filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

# 输出部分
output {
    elasticsearch {
        # elasticsearch索引名
        index => "octopus"
        # 使用input中的type作为elasticsearch索引下的类型名
        document_type => "%{type}"   # <- use the type from each input
        # elasticsearch的ip和端口号
        hosts => "localhost:9200"
        # 同步mysql中数据id作为elasticsearch中文档id
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

# 注: 使用时请去掉此文件中的注释,不然会报错
  • 在logstash-6.4.2/config 目录下新建jdbc.sql文件
select * from t_employee
  • 运行
cd logstash-6.4.2
# 检查配置文件语法是否正确
bin/logstash -f config/jdbc.conf --config.test_and_exit
# 启动
bin/logstash -f config/jdbc.conf --config.reload.automatic
  • 刷新localhost:9100页面查看数据是否导入

以上是插件导入 以下是Python语言导入数据

要实现 Elasticsearch 与 MySQL 数据保持同步,你可以按照以下步骤进行: 1. 安装 Elasticsearch:你需要在本地或服务器上安装 Elasticsearch,并启动它。你可以从官方网站下载并安装 Elasticsearch。 2. 安装 Elasticsearch JDBC 插件:你需要安装 Elasticsearch JDBC 插件,以便能够连接到 MySQL 数据库。你可以从 Elasticsearch 官网下载并安装插件。 3. 创建 Logstash 配置文件:你需要创建 Logstash 配置文件,以便将 MySQL 数据库中的数据同步Elasticsearch。以下是一个示例配置文件: ``` input { jdbc { jdbc_driver_library => "/path/to/mysql-connector-java.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/mydatabase" jdbc_user => "myuser" jdbc_password => "mypassword" schedule => "* * * * *" statement => "SELECT * from mytable where updated_at > :sql_last_value" use_column_value => true tracking_column => "updated_at" tracking_column_type => "timestamp" clean_run => true } } output { elasticsearch { hosts => ["localhost:9200"] index => "myindex" document_id => "%{id}" } } ``` 以上配置文件会每分钟查询一次 MySQL 数据库中的数据,并将其同步Elasticsearch 中。Logstash 会根据更新时间字段(这里是 updated_at)来判断哪些数据需要同步。如果你需要同步新增的数据,可以将 clean_run 参数设置为 false。 4. 启动 Logstash:使用以上配置文件启动 Logstash。 5. 验证同步结果:你可以使用 Elasticsearch 查询 API 验证同步结果。以下是一个示例查询: ```php require 'vendor/autoload.php'; $client = Elasticsearch\ClientBuilder::create()->build(); $params = [ 'index' => 'myindex', 'type' => 'mytype', 'body' => [ 'query' => [ 'match' => [ 'title' => 'php' ] ] ] ]; $response = $client->search($params); foreach ($response['hits']['hits'] as $hit) { echo $hit['_source']['title'] . "\n"; } ``` 以上是使用 Elasticsearch JDBC 插件实现 Elasticsearch 与 MySQL 数据保持同步基本步骤。你可以根据自己的需求进行调整和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值