本文目录导航:
Elasticsearch:从 ES|QL 到 PHP 对象
从 Elasticsearch 8.13.0 版本开始,elasticsearch-php 客户端提供了 ES|QL 查询功能,允许你将结果映射到 PHP 对象,包括自定义类。
ES|QL 是一种强大的数据过滤、转换和分析语言,利用管道(|)逐步操作和转换数据。
此功能在技术预览版中可用,提供了组合一系列操作的能力,其中操作输出成为下一个操作的输入,实现复杂数据转换和分析。
使用案例中,展示了如何使用 ES|QL 查询来检索存储在 Elasticsearch 中的数据。
例如,查询可以返回 sample_data 索引中的前 3 个文档。
为了说明功能,一个包含 81,828 本书的 CSV 文件被导入 Elasticsearch,其中包含书籍信息。
通过 Elasticsearch 映射创建了名为 books 的索引,并使用 PHP 脚本批量导入数据。
该过程在 PHP 8.2.17 下执行,耗时 7 秒,使用 28 MB RAM,索引大小约为 62 MB。
在 PHP 中执行 ES|QL 查询后,结果以 JSON 表结构形式呈现。
其中,columns 字段包含 name 和 type 定义,values 字段以 JSON 格式表示表数据。
例如,查询可以检索按用户排名评论排序的 Stephen King 撰写的前 10 本书。
结果包含与一本书相关的 6 个属性(作者、描述、出版商、评级、标题、年份)和 10 个结果,所有书籍均由 Stephen King 撰写。
结果对象可以作为数组、字符串或对象访问。
通过对象接口,可以使用属性和索引来访问值。
例如,可以使用 $result->values[0][4] 访问列表中第一本书(0)的标题(4),$result->values[1][3] 访问列表中第一本书(0)的排名分数(3)等。
PHP 中数组索引从零开始。
为了将结果映射到对象数组,可以使用 elasticsearch-php 的 mapTo() 功能。
此功能允许将 ES|QL 结果的列返回的属性映射到对象数组中。
如果你有自定义的 Book 类,可以使用它来映射结果。
即使类中包含 ES|QL 结果中未包含的属性,mapTo() 函数也将仅使用列返回的属性。
欲深入了解并应用此功能,可以下载报告的所有示例。
此功能适用于将 RAG 构建到应用程序中或尝试使用不同 LLMs 的向量数据库。
访问 Github 查看 LangChain、Cohere 等示例笔记本,并参加即将开始的 Elasticsearch 工程师培训。
PHP操作Elasticsearch
本文将介绍如何使用PHP操作Elasticsearch,包括Elasticsearch的安装和基本操作。
安装Elasticsearch时,需要在文件中引入elasticsearch-php,并使用composer进行客户端安装。
在进行快速开始操作时,创建一个文件,并在其中编写代码。
浏览器访问此文件后,可以查看结果,前提条件是Elasticsearch已包含数据。
接下来,进行Elasticsearch的基本操作。
首先,创建索引;其次,根据需要指定模板创建索引;接着,删除索引;然后,更改索引配置参数;获取索引的当前配置参数;更改或增加索引映射;返回索引和类型的映射细节;索引一个文档(如果提供id,则更新对应id的记录;若未提供,则生成文档);获取文档;更新文档(指定doc参数进行字段内容更新);执行脚本进行更新,对字段数据进行拼接或自增;最后,删除文档。
通过本文的学习,您将掌握使用PHP操作Elasticsearch的方法,包括创建、删除、修改索引、文档,以及执行搜索操作。
希望本文能够帮助到您,同时,关注公众号:PHP开源社区,获取更多PHP大厂PDF面试文档、PHP进阶架构视频资料、PHP精彩好文。
如何查看elasticsearch版本
查看elasticsearch版本的方法:
1、elasticsearch已经启动的情况下
使用curl-XGETlocalhost:9200命令查看:
number:1.7.2,
build_hash:eb1385b8125d647f593f7202acbd816e8ec,
build_timestamp:2015-09-14T09:49:53Z,
build_snapshot:false,
lucene_version:4.10.4
在输出的json中有版本信息version中的number-1.7.2即为其版本号。
2、在elasticsearch没有启动的情况下
通过在es的安装目录下的lib目录中查看jar包来确定版本号:
lslib/|grep-Pelasticsearch-\d\.\d\.\d\
输出。
通过jar包可知es版本号为1.7.2
扩展资料
ElasticSearch是一个基于Lucene的搜索服务器。
它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
官方客户端在Java、(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。
根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。
这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
Elasticsearch可以用于搜索各种文档。
它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
”Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。
每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。
再平衡和路由是自动完成的。
“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。
一旦创建了索引,就不能更改主分片的数量。
Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。
它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。
另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。
Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。
评论(0)