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库,提供了分布式、可扩展、近实时的搜索与分析能力。在本案例中,我们关注的是三份示例数据文件——`logs.json`, `...
Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助...
Elasticsearch是一个开源的全文搜索引擎,广泛应用于大数据分析和实时搜索场景。它的最新版本为7.14.0,这是专为Linux x86_64架构设计的。在这个版本中,Elasticsearch提供了一系列增强的功能和性能优化,旨在提高...
### Elasticsearch:开源搜索和数据分析引擎 #### 一、概述 Elasticsearch 是一款基于 Apache Lucene 开发的开源搜索引擎和数据分析平台。它以其强大的搜索能力、高性能的数据处理速度以及易于扩展的特点,在大...
作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据操作时,为了方便地与ES进行交互,我们通常会使用查询客户端和可视化工具。 **1. ...
Elasticsearch是一个开源的全文搜索引擎,它以其高效、可扩展的特性被广泛应用于数据分析、日志分析、网站搜索等领域。本文将详细介绍Elasticsearch的安装、配置以及与Spring的整合,还会涉及Elasticsearch的curl...
**Elasticsearch 全文搜索引擎** Elasticsearch是一款开源、分布式的全文搜索引擎,以其高效、灵活和可扩展性在IT行业中赢得了广泛的认可。它基于Lucene库构建,但提供了更高级别的API和集群管理功能,使得数据搜索...
Elasticsearch 的核心功能包括全文搜索、数据分析以及实时性能。在全文搜索方面,它采用了倒排索引技术,使得搜索速度极快。在数据分析上,Elasticsearch 支持多种数据类型,如文本、数字、日期和地理位置,并且具备...
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...
Elasticsearch 是一个流行的开源全文搜索引擎,常用于大数据分析和实时数据检索。然而,如果没有正确配置安全设置,它可能会暴露于未授权访问的风险中,这可能导致数据泄露或恶意操作。本文将详细讲解如何修复 ...
除了基础操作,Elasticsearch还提供许多高级特性,如聚合分析(Aggregations)用于统计分析,脚本字段(Script Fields)用于动态计算字段,以及实时数据分析(Real-time Analytics)等功能。 在` ESDemo `项目中,...
Elasticsearch则是一个分布式、开源的搜索和分析引擎,特别适合实时数据分析和大规模数据索引。它使用倒排索引技术,使得全文搜索变得高效。Elasticsearch具有高可扩展性和容错性,是构建搜索引擎的理想选择。 在...
Elasticsearch是一个基于Apache Lucene的搜索和数据分析引擎。下面我们将从头开始搭建一个Elasticsearch系统,并讨论其安装、配置和运行过程。 1. Elasticsearch的安装 Elasticsearch的安装可以通过两种方式进行:...
Elasticsearch 是一个基于 Lucene 库的搜索和数据分析引擎,它提供了一个分布式的搜索引擎,可以对大规模数据进行搜索、分析和可视化。在本文中,我们将了解如何在 CentOS 7 上部署 Elasticsearch 7.4 集群,并进行...
在大数据时代,Elasticsearch作为一个高效、可扩展的全文搜索引擎,被广泛应用于日志分析、实时监控、数据挖掘等领域。本篇文章将详细解析如何使用Java API来操作Elasticsearch 5.x版本,帮助你快速上手。 一、...
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...
Elasticsearch 是一个开源的、基于 Lucene 的全文搜索引擎,它提供了一个分布式、RESTful 风格的搜索和数据分析引擎,用于处理海量数据,特别是对于日志管理和实时分析场景。版本 2.4.6 是 Elasticsearch 的一个重要...
从文件描述来看,这篇文章的目的是为了提高海量及复杂数据的访问效率,在对ElasticSearch搜索引擎框架分析的基础上,设计并实现了分布式全文搜索系统。系统包含三个主要的模块:数据接入、数据索引和全文搜索。数据...
Elasticsearch是一种流行且功能强大的分布式搜索引擎,常用于大数据分析、日志分析、全文检索等场景。Kettle,又称Pentaho Data Integration(PDI),是一款开源的数据集成工具,它提供了ETL(提取、转换、加载)...
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...