前言

  久仰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学习笔记——安装,初步使用的更多相关文章

  1. ElasticSearch学习笔记--安装

    1.安装ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html 这 ...

  2. Elasticsearch学习笔记——安装、数据导入和查询

    到elasticsearch网站下载最新版本的elasticsearch 6.2.1 ? 1 https://www.elastic.co/downloads/elasticsearch 中文文档请参 ...

  3. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  4. elasticsearch学习笔记——相关插件和使用场景

    logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...

  5. ElasticSearch学习笔记(超详细)

    文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...

  6. SystemTap 学习笔记 - 安装篇

    https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux ...

  7. ElasticSearch学习笔记-01 简介、安装、配置与核心概念

    一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...

  8. 【原】无脑操作:ElasticSearch学习笔记(01)

    开篇来自于经典的“保安的哲学三问”(你是谁,在哪儿,要干嘛) 问题一.ElasticSearch是什么?有什么用处? 答:截至2018年12月28日,从ElasticSearch官网(https:// ...

  9. alfs学习笔记-安装和使用blfs工具

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Beyond Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习 ...

随机推荐

  1. Pytorch半精度浮点型网络训练问题

    用Pytorch1.0进行半精度浮点型网络训练需要注意下问题: 1.网络要在GPU上跑,模型和输入样本数据都要cuda().half() 2.模型参数转换为half型,不必索引到每层,直接model. ...

  2. python+requests接口自动化测试框架实例详解教程

    1.首先,我们先来理一下思路. 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据 ...

  3. 网络基础之socket

    socket 我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程.能够唯一标示网络中的进程后,它 ...

  4. MySQL 8.0窗口函数

    团队介绍 网易乐得DBA组,负责网易乐得电商.网易邮箱.网易技术部数据库日常运维,负责数据库私有云平台的开发和维护,负责数据库及数据库中间件Cetus的开发和测试等等. 一.窗口函数的使用场景 作为I ...

  5. mysql分组统计以及全部统计union all使用

    select '全部' AS `organ_category`, COUNT(*) AS amount FROM `organ_new` WHERE `city_code` ='SZ0755' AND ...

  6. Oracle11g温习-第十二章:tables

    2013年4月27日 星期六 10:44 1.表的功能 存储.管理数据的基本单元(二维表:由行和列组成) 2.表的类型  1)普通表:[heap table(堆表) :数据存储时,无序的,对它的访问采 ...

  7. jqgrid取所有行的值,jqgrid取行对应列(name)的值,jqgrid取多行值对应列转json的方法

    1.jqgrid取所有行的值(#gridTable指对应table的ID) var obj = $("#gridTable").jqGrid("getRowData&qu ...

  8. html 中一些不常见的标签

    标签 描述 <b> 定义粗体文本. <big> 定义大号字. <em> 定义着重文字. <i> 定义斜体字. <small> 定义小号字. ...

  9. npm run dev 报错 版本太低

    解决方案是: 先用命令: npm -v 查看下你的版本(我原来是 V3.1 不行) 然后用 cnpm install -g npm  更新版本 npm - v 变成最新的4.0.4 npm run d ...

  10. CentOS下安装JDK-rpm文件

    1.下载JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html. 测试 ...