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的过程 经博客园-骏马金龙前辈介绍,开始接触学习 ...
随机推荐
- Linux中计划任务、周期性任务设置
Linux中计划任务.周期性任务设置 计划任务:指在未来的特定时间里,执行一次某一特定任务.当然,如果同一任务需要在不同时间点执行执行两次.三次或多次,可以视为多个一次看待. 周期性任务:指某一任务需 ...
- 焦作网赛-G-欧拉降幂
https://nanti.jisuanke.com/t/31716 答案就是2^(n-1)%mod ,n非常的大,由欧拉降幂公式 AB%C=AB%phi(C)+phi(C)%C 化简 2n- ...
- Leetcode 1014. 在 D 天内送达包裹的能力
1014. 在 D 天内送达包裹的能力 显示英文描述 我的提交返回竞赛 用户通过次数197 用户尝试次数272 通过次数203 提交次数538 题目难度Medium 传送带上的包裹必须在 D 天 ...
- 字符序列(characts)
字符序列(characts) 问题描述: 从三个元素的集合[A,B,C]中选取元素生成一个N 个字符组成的序列,使得没有两个相邻的 子序列(子序列长度=2)相同,例:N=5 时ABCBA 是合格的,而 ...
- JAVA的SPI简单应用
最近在研究dubbo时,发现了JAVA的SPI特性.SPI的全名为Service Provider Interface,是JDK内置的一种服务发现机制. 具体实现: 1.定义一个接口 public i ...
- @Configuration的使用 和作用
1从spring4.0以后,@Spring boot Application就包含了@ComponentScan,@ComponentScan就不用写了 2@MapperScan(basePackag ...
- 【Loadrunner_WebService接口】对项目中的GetProduct接口生成性能脚本
一.环境 https://xxx.xxx.svc?wsdl 用户名:username 密码:password 对其中的GetProduct接口进行测试 备注:GetProducts.xml文件内容和S ...
- laravel中当使用Elquent ORM中的模型作为参数进行传递时的方法:
Controller中的函数: /* $modelArg:是调用模型的路径,以字符串的形式传递过来. $id:要查询当前模型的id号. $args:具体查询的字段 */ public function ...
- Win10系列:UWP界面布局基础8
路由事件 XAML不仅继承了传统的事件处理方式,还引入了一个增强型事件处理机制:路由事件(RoutedEvent).路由事件和传统事件的不同是:路由事件允许一个对象触发事件后,可以同时拥有多个事件接收 ...
- 4.2计算字符的ASCII碼
Q:终端输入一个字符,输出ASCII碼 #include<stdio.h> int main() { char c; printf("input a charscter:&quo ...