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完整
<block wx:for="{{data_2}}" wx:key='index' wx:if="{{data_2.length}}"> <v ...
- 【洛谷p1015】【一本通p1309】回文数(noip1999)
(过了这个题灰常灰常开心) 好像前两道忘记了传送门: 回文数[传送门] 洛谷算法标签: 其实还有高精度 这个题困死在了十六进制,后来想了想,我们在c[i]中存入一个大于十的数之前的程序也可以实现回文( ...
- 04 爬虫数据存储之Mongodb
MongoDB 认识MongoDB MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...
- 【微信公众号开发】【13】批量导出公众号所有用户信息到Excel
前言: 1,一次拉取调用最多拉取10000个关注者的OpenID,当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求 2,获取OpenID列表后 ...
- vue组件插槽
vue中子组件内容如何定义为可扩展的呢,就是用slot插槽来实现.如下图 如果<slot></slot>标签有内容,那就默认显示里面的内容,父组件传了就会覆盖此默认的内容.
- input上传限定文件类型
input上传限定文件类型 accept="image/*" 限定为只能上传图片 accept=”audio/* 限定为只能上传音频 accept=”video/*” 限定 ...
- webpack打包vue文件报错,但是cnpm run dev正常,最后我只想说:是我太笨,还是webpack4.4版本太坑
最近做一个项目,需要使用webpack打包 .vue 文件的单页面应用,调试都正常,使用cnpm run dev 都可以,就是webpack打包时报错.如下: ERROR in ./src/App.v ...
- Hive的JDBC
Hive 的JDBC 包含例子 https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-JDBC HiveServ ...
- noip2016组合数问题
题目描述 组合数 Cnm 表示的是从 n 个物品中选出 m 个物品的方案数.举个例子,从 (1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3) 这三种选择方法.根据组合数的 ...
- 第2天【OS Linux发行版介绍、Linux系统基础使用入门、Linux命令帮助、Linux基础命令】
Logout 退出系统 Gedit 文本编辑器工具 Uname –r 查看内核版本信息,uname –a 比较详细 Cat /proc/cpuinfo 查看CPU Cat /p ...