elasticsearch学习笔记——安装,初步使用
前言
久仰elasticsearch大名,近年来,fackbook,baidu等大型网站的搜索功能均开始采用elasticsearch,足见其在处理大数据和高并发搜索中的卓越性能。不少其他网站也开始将elasticsearch作为搜索功能中的一个重要选项,从招聘启事的人员技能要求上就可见一斑。elasticsearch虽然是基于java开发,但是他提供了Restful接口的形式供其他程序调用,非常的方便,对于php,python等其他语言也有对应的扩展支持。所以很有必要学习一下elasticsearch。
安装
笔者在centos6.8环境下安装,安装的是elasticsearch-6.2.4。参考:PHP_elasticsearch搜索引擎的安装与使用 安装,但是安装后启动出现的大量error,需要搜索对应解决方案,比较麻烦,但还是都可以顺利的解决。可见一个新的程序出来总是有不少的问题,php的安装和使用就相对来说要顺畅不少。
之后我又安装了elasticsearch-head,一个图形化查询管理elasticsearch的插件。安装过程也不是很顺畅,通过搜索解决。
初步使用
首先需要明白的是,elasticsearch里面的一些名词和传统关系型数据库(如mysql)的对应关系,其实还都是一一对应的,换了名字,要重新记忆一下。

Relational DB -> Databases(数据库) -> Tables(表) -> Rows(行) -> Columns(列)
Elasticsearch -> Indices(索引) -> Types(类型) -> Documents(文档) -> Fields(字段)
我习惯用php语言,所以使用的是elasticsearch-php6.0扩展来操作elastcsearch。它的官方文档地址,非常有用。要注意安装的elasticsearch-php版本,版本过低可能无法操作elastcsearch。
安装完成后,就可以操作啦。下面是一个简单的例子,将数据库里面的数据读取出来,转存到elasticsearch,并且可以查询数据,还可以模糊查询数据(sql里面的like查询)。注意的是转存后需要sleep一下,否则不能立刻查询出结果。
<?php
/*
* 简单运用elasticsearch实例,创建索引,查询数据。
*/
require_once('vendor/autoload.php');
use Elasticsearch\ClientBuilder; function get_conn(){
$host = '127.0.0.1';
$dbname = 'test';
$user = 'root';
$passwd = '123456'; $conn = new PDO("mysql:dbname=$dbname;host=$host",$user,$passwd, array(PDO::ATTR_PERSISTENT => true));
$flag = $conn->exec('set names utf8');
return $conn;
} function create_index(){
//Elastic search php client $client = Elasticsearch\ClientBuilder::create()->build();
$sql = "SELECT * FROM tb_voteoption";
$conn = get_conn();
$stmt = $conn->query($sql);
$rtn = $stmt->fetchAll(); //delete index which already created
$params = array();
$params['index'] = 'test';
$client->indices()->delete($params); //create index
$rtnCount = count($rtn);
for($i=0;$i<$rtnCount;$i++){
$params = array();
$params['body'] = array(
'voteOptionID' => $rtn[$i]['voteOptionID'],
'voteID' => $rtn[$i]['voteID'],
'voteOptionName' => $rtn[$i]['voteOptionName'],
'ticketNum' => $rtn[$i]['ticketNum']
);
$params['index'] = 'test';
$params['type'] = 'tb_voteoption'; //Document will be indexed to test/tb_voteoption/autogenerate_id
var_dump($params);
$client->index($params);
}
echo 'create index done!';
} function search(){
//Elastic search php client
$client = Elasticsearch\ClientBuilder::create()->build();
$params = array();
$params['index'] = 'test';
$params['type'] = 'tb_voteoption';
$params['body']['query']['match']['voteOptionID'] = '54'; $rtn = $client->search($params);
var_dump($rtn);
} /*类似于sql里面的like查询*/
function like_search(){
//Elastic search php client
$client = Elasticsearch\ClientBuilder::create()->build();
$params = array();
$params['index'] = 'test';
$params['type'] = 'tb_voteoption';
$params['body']['query']['wildcard'] = array('voteOptionName'=>'王*'); $rtn = $client->search($params);
var_dump($rtn);
}
set_time_limit(0);
error_reporting(E_ALL);
ini_set('display_errors','on');
create_index();
sleep(5); //建好索引后需要sleep,否则查询不出数据
search();
like_search();
?>
里面用到的数据库数据,可以用以下sql语句创建。
DROP TABLE IF EXISTS `tb_voteoption`;
CREATE TABLE `tb_voteoption` (
`voteOptionID` int(11) NOT NULL AUTO_INCREMENT,
`voteID` int(11) DEFAULT NULL,
`voteOptionName` varchar(255) CHARACTER SET gb2312 DEFAULT NULL,
`ticketNum` int(11) DEFAULT '',
PRIMARY KEY (`voteOptionID`),
KEY `voteID` (`voteID`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8 COMMENT='投票选项表'; INSERT INTO `tb_voteoption` VALUES ('', '', '朱芳宇', '');
INSERT INTO `tb_voteoption` VALUES ('', '', '王治郅', '');
INSERT INTO `tb_voteoption` VALUES ('', '', '姚明', '');
INSERT INTO `tb_voteoption` VALUES ('', '', '易建联', '');
elasticsearch学习笔记——安装,初步使用的更多相关文章
- ElasticSearch学习笔记--安装
1.安装ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html 这 ...
- Elasticsearch学习笔记——安装、数据导入和查询
到elasticsearch网站下载最新版本的elasticsearch 6.2.1 ? 1 https://www.elastic.co/downloads/elasticsearch 中文文档请参 ...
- Elasticsearch学习笔记一
Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...
- elasticsearch学习笔记——相关插件和使用场景
logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...
- ElasticSearch学习笔记(超详细)
文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...
- SystemTap 学习笔记 - 安装篇
https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux ...
- ElasticSearch学习笔记-01 简介、安装、配置与核心概念
一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...
- 【原】无脑操作:ElasticSearch学习笔记(01)
开篇来自于经典的“保安的哲学三问”(你是谁,在哪儿,要干嘛) 问题一.ElasticSearch是什么?有什么用处? 答:截至2018年12月28日,从ElasticSearch官网(https:// ...
- alfs学习笔记-安装和使用blfs工具
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Beyond Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习 ...
随机推荐
- 小程序分享转发功能实现demo
/** * 用户点击右上角分享 */ onShareAppMessage: function() { //分享 console.log("分享") var that = this ...
- 4.1.3 Euclid's Game (POJ 2348)
Problem description: 以辗转相除法为基础,给定两个整数a和b,Stan和Ollie轮流从较大的数字中减去较小数字的倍数(整倍数),并且相减后的结果不能为零.Stan先手,在自己的回 ...
- PAT 1046 Shortest Distance
1046 Shortest Distance (20 分) The task is really simple: given N exits on a highway which forms a ...
- PostgreSQL导出一张表到MySQL
1. 查看PostgreSQL表结构,数据量,是否有特殊字段值 region_il=# select count(*) from result_basic; count --------- ( row ...
- Directory /home/hdfs/name is in an inconsistent state: storage directory does not exist or is not a
2018-06-11 17:50:36,896 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered except ...
- docker 安装nginx、php-fpm
运行环境: 创建目录: mkdir -p /Users/sui/docker/nginx/conf.d && mkdir /Users/sui/www && cd /U ...
- textarea标签内的文字无缘故居中解决原因
<textarea> 内容内容 </textarea> 浏览器会解析为 <textarea><br> 内容内容</textarea> ...
- Vmware tools install
Vmware tools 1◆ 下载 2◆ diagram Ifcfg-eth0 =====>关闭防火墙 systemctl stop firewalld.service ===== ...
- Test22455
- 学习笔记-AngularJs (一)
最近对AngularJs产生了浓厚的学习兴趣,于是便搜罗所有资料,开始学习起来,也希望把学习过程记录下来. 首先学习之前,需要对AngularJs进行个大概的了解: AngularJS[1] 诞生于 ...