一。ES 扫盲
ES=elasticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
实际项目开发实战中,几乎每个系统都会有一个搜索的功能,当搜索做到一定程度时,维护和扩展起来难度就会慢慢变大,所以很多公司都会把搜索单独独立出一个模块,用ElasticSearch等来实现。
基本概念:
索引(indices)---------Databases 数据库
类型(type)------------Table 数据表
文档(Document)----------Row 行
字段(Field)----------------Columns 列
详细说明:
索引库(indices) indices是index的复数,代表许多的索引,
类型(type) 类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,
其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
文档(document) 存入索引库原始的数据。比如每一条商品信息,就是一个文档
字段(field) 文档中的属性
映射配置(mappings)字段的数据类型、属性、是否索引、是否存储等特性
二。使用(PHP版)
版本:7.7.1
英文最新PHP客户端文档:
https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/quickstart.html
其他文档:
https://www.elastic.co/guide/cn/elasticsearch/php/current/index.html(跟上面的差不多,但不是最新)
使用步骤:
1.安装composer包
环境要求:php: ^7.1
ext-json: >=1.3.7
composer ES官方页面: https://packagist.org/packages/elasticsearch/elasticsearch
composer.json 里加上
{
"require": {
"elasticsearch/elasticsearch": "~7.7.0"
}
}
composer install
或直接命令行运行:
composer require elasticsearch/elasticsearch '~7.7.0'
note: sdk版本要跟es版本对应上,官方页面有说明
2.建索引
Note:一般情况,索引会插入第一天数据时自动创建,但是几乎所有字段都是text类型,而索引字段类型一旦建好则不容易动态更改,所以最好自行建索引,规范好每个字段的类型,这关系好查询相关操作能否顺利进行。
引入代码:
use think\Env;
use Elasticsearch\ClientBuilder;
获取客户端实例代码:
$client = ClientBuilder::create()->setHosts(['127.0.0.1'])->build();
建索引代码:
例:
3.封装自己的增删查改函数(以tp5.0框架、demo索引为例)
例:
添加文档
更新文档
删除文档
搜索例子:
搜索文档
4. es的精华之一是各种各样五花八门的搜索语句,如同安装后输入ip:9200 后,浏览器输出的一句话那样,可以说,无搜索,无Elasticsearch。
领取专属 10元无门槛券
私享最新 技术干货