python使用ElasticSearch和logstash-input-jdbc实现搜索引擎部署

一、环境下载(所有文件放在ES6.3.1文件夹下)

1.下载elasticsearch-6.3.1:

1.下载:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz
2.解压:
tar -vxf elasticsearch-6.3.1.tar.gz

2.下载ik分词器(Elasticsearch是不支持中文分词的,ik分词器支持中文,且分词器版本最好与elasticsearch版本保持一致):

1.下载地址:

 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.1/elasticsearch-analysis-ik-6.3.1.zip

2.解压zip文件
3.将解压后的文件目录elasticsearch-analysis-ik-6.3.1放到elasticsearch的安装目录下的plugins下

  3.下载kibana6.3.1 :

1.下载地址:

https://artifacts.elastic.co/downloads/kibana/kibana-6.3.1-darwin-x86_64.tar.gz

2.解压:
tar -xvf kibana-6.3.1-darwin-x86_64.tar.gz

4. 下载logstash6.3.1

1.下载地址:

https://artifacts.elastic.co/downloads/logstash/logstash-6.3.1.tar.gz
2.解压:
tar -xvf logstash-6.3.1.tar.gz
3.安装插件:
cd logstash-6.3.1
./bin/logstash-plugin  install logstash-input-jdbc

出现以上提示表明插件安装成功

5.下载mysql-connector-java-5.1.47-bin.jar

1.下载地址:
https://dev.mysql.com/downloads/file/?id=480090
2.解压:
tar -xvf mysql-connector-java-5.1.47.tar.gz
3.把解压后的文件夹里的mysql-connector-java-5.1.47-bin.jar文件放入ES6.3.1文件夹

ES6.3.1文件夹:

二、环境运行:

1.1启动elasticsearch-6.3.1:

 cd elasticsearch-6.3.1
 ./bin/elasticsearch

./bin/elasticsearch是前台启动,如果想后台启动可以使用-d参数: ./bin/elasticsearch -d

1.2.验证Elasticsearch已经启动:

在浏览器上直接访问http://localhost:9200/ 或者命令行访问

curl http://localhost:9200/?pretty

 


1.3.验证ik分词器已经启动:

curl -XGET -H 'Content-Type: application/json' 'http://localhost:9200/_analyze?pretty' -d '{
"analyzer" : "ik_max_word",
"text": "中华人民共和国国歌"
}'

2.1启动kibana6.3.1:

 cd kibana-6.3.1-darwin-x86_64
./bin/kibana

2.2.验证Elasticsearch已经启动:

在浏览器上直接访问  http://localhost:5601

 3.1.启动logstash6.3.1:

cd logstash-6.3.1
./bin/logstash -e 'input { stdin { } } output { stdout {} }'

3.2.验证logstash6.3.1已经启动:

出现成功提示表明logstash6.3.1已经成功启动

三、logstash 实现mysql数据库数据同步:

1.进入logstash-6.3.1文件夹:

 cd logstash-6.3.1

2.创建sqlconfig.conf文件:

vim sqlconfig.conf

3.sqlconfig.conf文件内容如下:

input {
    jdbc {
      jdbc_connection_string => "jdbc:mysql://localhost:3306/test"  # localhost:3001表示数据库地址和端口,test表示数据库名称
      jdbc_user => "root"  # 数据库用户名
      jdbc_password => "root" # 数据库密码
      jdbc_driver_library => "D:/software/logstash-6.2.2/logstash-6.2.2/mysql/mysql-connector-java-5.1.47-bin.jar"  # mysql-connector-java-5.1.47-bin.jar绝对路径
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      statement => "select id_,content_,star_ from note_abstract" # sql查询语句
      schedule => "* * * * *" #定时器,每分钟更新一次
      type => "user"  # 与output的type对应,可以设置多张表
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
    if[type] == "user" {
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "index_note" # 索引名称
            document_id => "%{id_}" # ID编号
        }
    }
    stdout {
        codec => json_lines
    }
}

4.保存文件后,再次运行logstash,这次指定加载文件为sqlconfig.conf

./bin/logstash -f sqlconfig.conf

 出现成功提示表明加载sqlconfig.conf文件成功

5.验证logstash 实现mysql数据库数据成功同步:

curl  -H "Content-Type: application/json"  -XPOST 'localhost:9200/index_note/_search?pretty' -d '
{
  "query": { "match_all": {} }
}'

又返回内容表示数据成功同步

此时kibana控制台已经有index_note索引

四、flask框架使用es搜索引擎进行查询:

1.安装依赖:

pip install elasticsearch==6.3.1 
pip install elasticsearch-dsl==6.3.1 

2.使用搜索引擎代码示例如下:

from elasticsearch import Elasticsearch

es = Elasticsearch()


@app.route("/")
def search():
    content_ = web_helper.get_param('content_')  #搜索内容
    body = {
        "query": {
            "match": {
                "content_": content_  # 匹配字段
            }
        }
    }
    res = es.search(index='index_note', body=body)  # 索引名称
    return web_helper.return_msg(1, '成功', res['hits']['hits'])

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值