elasticsearch的使用
ElasticSearch是什么?
网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为混凝土泵车等企业提供专业服务。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
简单来说就是用来做网站/APP搜索功能
mac下环境安装
brew install elasticsearch
还需要安装logstash和MySQL-connector用于同步mysql数据
brew install logstash
mysql-connector 在phpstorm目录下就会有这个文件
/Users/wcc/Library/Preferences/PhpStorm2018.1/jdbc-drivers/MySQL Connector/J/5.1.46/mysql-connector-java-5.1.46.ja
所以这里我就不安装了,需要安装的自行搜索
安装logstash之后进入logstash的bin目录执行
logstash-plugin install logstash-input-jdbc
搜索
curl -XGET 'http://localhost:9200/request_log/_search?pretty&q=source:WWW'
使用ElasticSearch
配置同步规则
在bin目录下新增request_mysql.conf
input {
jdbc {
jdbc_driver_library => "/Users/wcc/Library/Preferences/PhpStorm2018.1/jdbc-drivers/MySQL Connector/J/5.1.46/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useSSL=false"
jdbc_user => "root"
jdbc_password => "root"
statement => "SELECT * FROM pre_request_logs_20180524 where update_time > :sql_last_value"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
schedule => "* * * * *"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost"
index => "request_log"
}
}
注意statement对于的sql语句就是要同步数据时执行的sql
update_time > :sql_last_value代表每次同步新增的数据,只有就不会导出重复同步数据
执行配置文件
logstash -f request_mysql.conf
每隔一分钟就会执行一次sql用来同步数据
查看所有索引
curl 'localhost:9200/_cat/indices?v'
在PHP中使用
下载elasticsearch的php扩展
composer.json文件中新增
{
"require": {
"elasticsearch/elasticsearch": "~6.0",
"monolog/monolog": "~1.0"
}
}
composer update
文件目录如下
先试试搜索功能
搜索source=WEB的所有行
use Elasticsearch\ClientBuilder;
require '../vendor/autoload.php';
$client = ClientBuilder::create()
->build();
$params = [
'index' => 'request_log',
'body' => [
'query' => [
'match' => [
'source' => 'WEB'
]
]
]
];
$response = $client->search($params);
print_r($response);
total:搜索到的行数
hits:搜索到数据的具体内容
本文名称:elasticsearch的使用
网址分享:http://azwzsj.com/article/gciocp.html