ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Elasticsearch的应用场景
- 一个线上商城系统,用户需要搜索商城上的商品。在这里你可以用es存储所有的商品信息和库存信息,用户只需要输入”空调”就可以搜索到他需要搜索到的商品。
- 一个运行的系统需要收集日志,用这些日志来分析、挖掘从而获取系统业务未来的趋势。你可以用logstash(ELK中的一个产品,elasticsearch/logstash/kibana)收集、转换你的日志,并将他们存储到es中。一旦数据到达es中,就你可以在里面搜索、运行聚合函数等操作来挖掘任何你感兴趣的信息。
- 如果你有想基于大量数据(数百万甚至数十亿的数据)快速调查、分析并且要将分析结果可视化的需求。你可以用es来存储你的数据,用kibana构建自定义的可视化图形、报表,为业务决策提供科学的数据依据。
安装 elasticsearch
首先确认下jdk有没有安装
java -version
下载源文件,解压,重新建一个用户,将目录的所属组修改为此用户,因为 elasticsearch 无法用 root 用户启动。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz tar zxvf elasticsearch-6.2.3.tar.gz useradd elasticsearch password elasticsearch chown elasticsearch:elasticsearch elasticsearch-6.2.3 cd elasticsearch-6.2.3 ./bin/elasticsearch // 启动
连接Elasticsearch:
1、Elasticsearch开启之后,可以直接通过http://127.0.0.1:9200/查看基本信息。
ES的基本用法:ES以RESTFul风格来命名API的, 其API的基本格式如下
http://<ip>:<port>/<索引>/<类型>/<文档id>
ES的动作是以http方法来决定的: 常用的http方法: GET/PUT/POST/DELETE
安装中文分词 elasticsearch-analysis-ik
搜索时,肯定会遇到很尴尬的问题——中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。安装Kibana要装与ES相同的版本
sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86_64.tar.gz tar -zxvf kibana-6.2.3-linux-x86_64.tar.gz
使用POSTMAN工具发送PUT请求创建
es支持多字段结构,例如:我们将常用的搜索条件和排序字段(销量,时间)配置到mappings.properties中
{ "settings":{ "number_of_shards": 3, "number_of_replicas": 1 }, "mappings":{ "man":{ "properties":{ "word_count":{ "type": "integer" }, "author":{ "type": "keyword" }, "title":{ "type": "text" }, "publish_date":{ "type": "date", "format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis" } } } } }
如下图
观察返回结果已经成功。
插入文档:PUT 127.0.0.1:9200/people/man
{ "name": "chenjie", "country": "China", "age": 30, "date": "1994-09-27" }修改文档:POST 127.0.0.1:9200/people/man/1/_update
{ "doc":{ "name":"chenjie_update" } }删除文档
DELETE 127.0.0.1:9200/people/man/1
使用PHPAPi构建和查询
创建表和测试数据,索引相当于MySQL中的表,文档相当于 MySQL 中的行记录。程序在新增/修改/删除记录的时候调用ES的接口对ES文档进行同步的新增/修改/删除操作。同步构建有很大缺陷。比如:ES宕机或者ES处理文档消耗了很长的时间影响用户的体验。可以使用KaFka中间件来进行异步构建文档。
CREATE TABLE articles ( id INT NOT NULL PRIMARY KEY auto_increment, title VARCHAR ( 200 ) NOT NULL COMMENT '标题', content text COMMENT '内容' ); INSERT INTO articles ( title, content ) VALUES ( 'Laravel 测试1', 'Laravel 测试文章内容1' ), ( 'Laravel 测试2', 'Laravel 测试文章内容2' ), ( 'Laravel 测试3', 'Laravel 测试文章内容3' );
实例化
require './vendor/autoload.php'; use Elasticsearch\ClientBuilder; $client = ClientBuilder::create()->build();
elasticsearch的动态性质,在添加第一个文档的时候自动创建了索引和一些默认设置。
创建索引
$params['index'] = 'articles_index'; $params['body']['settings']['number_of_shards'] = 2; $params['body']['settings']['number_of_replicas'] = 0; $client->indices()->create($params);
将文档加入索引
foreach ($lists as $row) { $params = [ 'body' => [ 'id' => $row['id'], 'title' => $row['title'], 'content' => $row['content'] ], 'id' => 'article_' . $row['id'], //maping db id 'index' => 'articles_index', 'type' => 'articles_type' ]; $client->index($params); }
从索引中获取文档
$params = ['index' => 'articles_index', 'type' => 'articles_type', 'id' => 'articles_1']; $res = $client->get($params); print_r($res);删除索引
$params = [ 'index' => 'articles_index' ]; $res = $client->indices()->delete($params); print_r($res);搜索文档,如果需要获取更多明细信息可以根据mysql表ID获取
<?php $params = ['index' => 'articles_index', 'type' => 'articles_type']; $params['body']['query']['match']['content'] = 'Laravel'; $params['body']['size'] = 10; $params['body']['from'] = 200; $params['body']['sort'] = ['content' => ['order' => 'desc']]; $res = $client->search($params); print_r($res); //相当于sql语句:select * from articles where content='Laravel' limit 200,10 order by content desc;
相关推荐
Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而 Elasticsearch将 Lucene 作为...
通过Kibana技术,Elasticsearch Hadoop很容易从Hadoop 生态系统中获得大数据分析的结果。 本书全面介绍Elasticsearch Hadoop技术用于大数据分析以及数据可视化的方法。内容共分7章,包括Hadoop、Elasticsearch、 ...
通过Kibana技术,Elasticsearch Hadoop很容易从Hadoop 生态系统中获得大数据分析的结果。本书全面介绍Elasticsearch Hadoop技术用于大数据分析以及数据可视化的方法。内容共分7章,包括Hadoop、Elasticsearch、 ...
Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和...
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...
ElasticSearch分布式搜索引擎是一个分布式的RESTful风格的搜索和数据分析引擎,能够解决越来越多的用例。作为Elastic Stack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 Elasticsearch是一...
Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合: Wikipedia 使用 Elasticsearch 提供带有...
(1)涵盖Elasticsearch目前最核心的两个应用领域,垂直搜索引擎,实时数据分析 (2)开发出2个企业级的大型复杂项目,是完全真实的大型企业项目,电商搜索引擎,电商实时数据分析平台 (2-1)大型电商搜索引擎,...
Elasticsearch是一个高度可扩展的开源全文本搜索和分析引擎。 它使您可以快速,近乎实时地存储,搜索和分析大量数据 TL; DR $ docker run --name elasticsearch bitnami/elasticsearch:latest Docker撰写 $ curl -...
Elasticsearch(elasticsearch-7.16.2-aarch64.rpm适用于Linux arm x86_64)是一个高度可扩展的开源全文本搜索和分析引擎。它使您可以快速,近乎实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和...
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Elasticsearch是一个...
相对于Spark Streaming、Storm等大数据实时计算引擎来说,Elasticsearch天生为分布式执行数据分析操作而生的架构,海量数据量级下的近实时(秒级)性能支持,以及无比强大的搜索和聚合分析的语法支持,让ES更加适合...
为您提供ElasticSearch分布式搜索引擎下载,Elasticsearch是一个分布式的RESTful风格的搜索和数据分析引擎,能够解决越来越多的用例。作为Elastic Stack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外...
它提供了一套强大的API和工具,可以实现分布式全文搜索、结构化和非结构化数据分析、日志存储和实时数据可视化等功能。 以下是一些Elasticsearch的关键特性和概念: 分布式架构:Elasticsearch使用分布式架构,...
Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计...
Elasticsearch(elasticsearch-7.17.0-arm64.deb 适用于deb Arm )是一个高度可扩展的开源全文本搜索和分析引擎。它使您可以快速,近乎实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和要求的应用...
Elasticsearch是一个高度可扩展的开源全文本搜索和分析引擎。它使您可以快速,近乎实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和要求的应用程序的基础引擎/技术。 elasticsearch-7.8.0-linux-...
Elasticsearch的特性 分布式、全文检索、近实时搜索和分析、高可用、模式自由、restful 讲述Elasticsearch的架构和Elasticsearch 的核心 概念 二、索引数据 单词 文档矩阵,倒排索引,倒排索引实例,单词词典 三、...
Elasticsearch(elasticsearch-8.2.0-arm64.deb ),适用于deb Arm :它是一个高度可扩展的开源全文本搜索和分析引擎。它使您可以快速,近乎实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和要求...