IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Elasticsearch介绍与PHP客户端端使用 -> 正文阅读

[大数据]Elasticsearch介绍与PHP客户端端使用

简介

Elasticsearch是一个基于JSON的分布式搜索和分析引擎。适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。

用途

Elasticsearch 在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,其可用于多种用例:

  • 应用或网站搜索

  • 日志处理和分析

  • 使用 Elasticsearch 作为存储引擎自动化业务工作流程

  • 应用程序性能监测

  • 地理空间数据分析

工作原理

原始数据会从多个来源(包括日志、系统指标和网络应用程序)输入到 Elasticsearch 中。这些数据在 Elasticsearch 中索引完成之后,便可针对数据运行复杂的查询,并使用聚合来检索自身数据等复杂查询。

索引

Elasticsearch?索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数组、地理位置或其他类型的数据)之间建立联系。

Elasticsearch 使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。

索引可以被认为是文档的优化集合,每个文档都是字段的集合,字段是包含数据的键值对。默认情况下,Elasticsearch 索引每个字段中的所有数据,并且每个索引字段都有一个专用的优化数据结构。例如,文本字段存储在倒排索引中,而数字和地理字段存储在 BKD 树中。使用每个字段的数据结构来组装和返回搜索结果的能力是 Elasticsearch 如此快速的原因。

Elasticsearch 还具有无模式的能力,这意味着无需明确指定每个字段及类型即可对文档进行索引。Elasticsearch 会自动检测新字段并将其添加到索引中。这种默认行为使索引和探索数据变得容易——只需开始索引文档,Elasticsearch 就会检测并将布尔值、浮点和整数值、日期和字符串映射到适当的 Elasticsearch 数据类型。

安装和配置

安装

1.此处基于Docker安装,没有Docker,请先安装Docker。

2.执行以下命令(安装版本为8.1)

docker network create elastic 
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.1.0 
docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.1.0

首次启动 Elasticsearch 时,会自动进行以下安全配置:

  • 为传输层和 HTTP 层生成证书和密钥。

  • 传输层安全 (TLS) 配置设置写入 elasticsearch.yml。

  • 为elastic用户生成密码。

  • 为 Kibana 生成一个注册令牌。

3.复制生成的密码和注册令牌并将其保存在安全位置。这些值仅在第一次启动 Elasticsearch 时显示。

Elasticsearch-php 安装和使用

安装

composer.json 中添加以下片段

{     
    "require": {         
        "elasticsearch/elasticsearch": "~7.0"            
    }
}

安装php composer.phar install

连接

HTTP 认证

如果采用了HTTP认证,需要按如下格式

$hosts = [     
    'http://user:pass@localhost:9200',
];  

$client = ClientBuilder::create()                     ->setHosts($hosts)                     
->build();

如果 Elasticsearch 集群由API 密钥保护,如以下代码片段所示。

$client = ClientBuilder::create()                     ->setApiKey('id', 'api_key')
->build();

SSL配置

配置 SSL 稍微复杂一些。需要确定您的证书是否已由公共证书颁发机构 (CA) 签名,或者它是否是自签名证书。

公共 CA 证书

$hosts = [     
    'https://localhost:9200' 
];  

$client = ClientBuilder::create()                    
->setHosts($hosts)                     
->build();

自签名证书

$hosts = ['https://localhost:9200']; 
$myCert = 'path/to/cacert.pem';  
$client = ClientBuilder::create()   
                  ->setHosts($hosts)                  
                  ->setSSLVerification($myCert)                   
                  ->build();

使用

索引一个文档

相当于新增一个数据库。json数据通过body参数传入。id可以指定也可以不指定,不指定就是自动生成。id唯一标识一个文档。

$params = [     
    'index' => 'my_index',     
    'id'    => 'my_id',     
    'body'  => ['testField' => 'abc']
];  

$response = $client->index($params); 
print_r($response);

获取一个文档

index,id需指定

$params = [
     'index' => 'my_index',    
      'id'    => 'my_id'
];  

$response = $client->get($params); 
print_r($response);

删除一个文档

$params = [
     'index' => 'my_index',     
     'id'    => 'my_id'
];  

$response = $client->delete($params); 
print_r($response);

删除索引

$deleteParams = [
     'index' => 'my_index'
]; 

$response = $client->indices()->delete($deleteParams); print_r($response);

创建索引

// 简单创建
$client = ClientBuilder::create()->build(); 
$params = [
     'index' => 'my_index'
];
$response = $client->indices()->create($params);


// 连同设置,字段类型一起创建(也可不指定,ES会自动匹配类型)
$client = ClientBuilder::create()->build(); 
$params = [
     'index' => 'my_index',     
     'body' => [ 
             'settings' => [
                      'number_of_shards' => 3,   //分片数
                      'number_of_replicas' => 2  //副本数
             ], 
             // 定义字段类型        
             'mappings' => [
                  '_source' => [
                        'enabled' => true             
                   ],             
                   'properties' => [                  
                       'first_name' => [
                             'type' => 'keyword'                 
                       ],                 
                       'age' => [                     
                           'type' => 'integer'                 
                        ]             
                    ]         
              ]     
       ]
];
                           
$response = $client->indices()->create($params);

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:37:48  更:2022-03-24 00:38:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:28:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码