热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ElasticSearch分布式全文检索引擎概念介绍及基本操作

目录

零、概念介绍

0-1 内部结构

0-2 可视化工具

0-2-1 Kibana - win下使用

一、安装

1-0 Windows安装

1-1 Windows 下启动

1-2 Linux 下安装

1-3 curl 安装 - 提供一种将请求提交给Elastic的快捷方式

1-4 设置Elastic的远程访问

二、Elastic 的简单操作

三、Plugins 操作(windows环境下)

3-1 Plugins 安装

3-1-1 方式一、通过指定插件名

3-1-2 方式二、通过本地url

3-1-3 方式三、通过HTTP url

3-2 Plugins - Listing, Removing and Updating Installed

四、Index操作

4-1 Index 新建

4-2 Index 删除

 五、Document 操作

5-1 更新文档

​5-2 删除文档

5-3 文档的批量处理


零、概念介绍

简单学习参考

官网

官方文档

基础学习参考

Elasticsearch索引原理

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.

本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以允许多个Elastic实例,单个实例被称为一个节点(node),一组节点构成一个集群(cluster)

当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • 可实现亿级数据实时查询
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

0-1 内部结构

  • Index - 数据管理的顶层单位(单个数据库)
  • Document - Index内的单条记录,多条文档构成了一个Index(Json格式文档)
    • 注意!同一个Index内的Document不要求有相同的结构(scheme),但最好保持相同,有利于提高搜索效率。
  • Type - Index内的虚拟逻辑分组,用来过滤Document
    • 比如weather这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天),这种分组就叫做 Type
    • 不同的Type应该有相似的结构,例如:性质完全不同的数据(比如products和logs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。
    • 注意!Elastic 6.X版本中只允许每个Index包含一个Type,7.X将会彻底删除Type

0-2 可视化工具

参考链接

Kibana - 下载链接

Kibana - 官方使用文档

Grafana - 下载链接

0-2-1 Kibana - win下使用

配置文件修改,将hosts指向elastic开启端口

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

需要等待一段时间,等终端开始显示完成

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

使用浏览器访问地址http://localhost:5601

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

一、安装

官网安装文档

注意:Elasticsearch是用Java开发的,最新版本的Elasticsearch需要安装jdk1.8以上的环境

安装包下载完,解压,进入到bin目录,启动 elasticsearch.bat 即可

1-0 Windows安装

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.msi

windows 建议使用MSI程序包,可以基于GUI界面完成安装

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

 

1-1 Windows 下启动

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

节点成功运行显示

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

# 使用命令行启动节点和单个集群(注意进入exe目录下)
.\elasticsearch.exe\elasticsearch.exe
​
# 使用命令行启动节点的时候覆盖集群或节点名称
./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_nameelasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name

1-2 Linux 下安装

# 命令行方式下载
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.tar.gz
$ tar -xvf elasticsearch-6.7.0.tar.gz
$ cd elasticsearch-6.7.0 / bin
​
# 启动
$ ./elasticsearch
​
# 报错"max virtual memory areas vm.maxmapcount [65530] is too low"
$ sudo sysctl -w vm.max_map_count=262144
​
# 查看默认9200的端口信息
$ curl localhost:9200
{
  "name" : "atntrTf",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "tf9250XhQ6ee4h7YI11anA",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}
​
''' 按下 Ctrl + C,Elastic 就会停止运行。 '''

1-3 curl 安装 - 提供一种将请求提交给Elastic的快捷方式

curl下载链接(注意系统匹配)

curl for win 的安装包

注意!记得 将curl.exe 配置到系统环境变量内

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

1-4 设置Elastic的远程访问

默认情况下,Elastic 只允许本机访问,如果需要远程访问,可以修改 Elastic 安装目录的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,然后重新启动 Elastic。

network.host: 0.0.0.0

上面代码中,设成0.0.0.0让任何人都可以访问。线上服务不要这样设置,要设成具体的 IP。

二、Elastic 的简单操作

注意!命令必须为双引号!!

# 查看集群健康
curl -X GET "localhost:9200/_cat/indices?v"
​
# 查看集群的节点列表
curl -X GET "localhost:9200/_cat/nodes?v"
​
# 列出所有index
curl -X GET "localhost:9200/_cat/indices?v"
# health status index uuid pri rep docs.count docs.deleted store.size pri.store.size 返回响应表示未存在相关index

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

三、Plugins 操作(windows环境下)

官方文档Plugins操作

官方文档 - 支持插件查询(非单页)

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

3-1 Plugins 安装

3-1-1 方式一、通过指定插件名

# 语法
elasticsearch-plugin install [plugin_name]
# 举例
elasticsearch-plugin install analysis-icu

3-1-2 方式二、通过本地url

# 语法
elasticsearch-plugin install [url]
# unix下
elasticsearch-plugin install file:///path/to/plugin.zip
# win下
elasticsearch-plugin install file:///C:/path/to/plugin.zip

3-1-3 方式三、通过HTTP url

elasticsearch-plugin install http://some.domain/path/to/plugin.zip
​
# 插件脚本将拒绝与具有不受信任证书的HTTPS URL通信。
# 要使用自签名HTTPS证书,您需要将CA证书添加到本地Java信任库,并将该位置传递给脚本,如下所示:
#(linux下)
sudo ES_JAVA_OPTS="-Djavax.net.ssl.trustStore=/path/to/trustStore.jks" bin/elasticsearch-plugin install https://host/plugin.zip

3-2 Plugins - Listing, Removing and Updating Installed

# list
elasticsearch-plugin list
​
# rm
elasticsearch-plugin remove [pluginname]
​
# install
elasticsearch-plugin install [pluginname]
​
# update (rm + install)
elasticsearch-plugin remove [pluginname]
elasticsearch-plugin install [pluginname]

四、Index操作

4-1 Index 新建

# 创建 customer 的 index
curl -X PUT "localhost:9200/customer?pretty"
# 查看所有 index
curl -X GET "localhost:9200/_cat/indices?v"

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

4-2 Index 删除

# 删除指定的index
curl -X DELETE "localhost:9200/customer?pretty"
# 查看所有index
curl -X GET "localhost:9200/_cat/indices?v"

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

 五、Document 操作

建议在Kibana下使用,不建议使用win的CMD操作(不是很好支持换行等操作)

# 注意!该命令操作都在kibana下实现,若需要强行win下实现,必须使用双引号
​
# 在customer(index)下创建 id 为 1 的 document ,json格式,内容为name
curl -XPUT "http://localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}'
​
PUT /customer/_doc/1?pretty
{
  "name": "John Doe"
}
​
# 查看文档内容
curl -X GET "localhost:9200/customer/_doc/1?pretty"
​
GET /customer/_doc/1?pretty
# 修改文档内字段
curl -XPUT "http://localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "hello"
}'

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

 5-1 更新文档

# 更新文档
POST /customer/_doc/1/_update?pretty
{
  "doc": { "name": "Jane Doe" }
}
​
curl -X POST "localhost:9200/customer/_doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Jane Doe" }
}
'
GET /customer/_doc/1?pretty

 ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

POST /customer/_doc/1/_update?pretty
{
  "doc": { "name": "Jane Doe", "age": 20 }
}
​
curl -X POST "localhost:9200/customer/_doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Jane Doe", "age": 20 }
}
'
​
GET /customer/_doc/1?pretty

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

# 使用简单脚本进行更新,使用script脚本将年龄更新到到25
POST /customer/_doc/1/_update?pretty
{
  "script" : "ctx._source.age += 5"
}
​
curl -X POST "localhost:9200/customer/_doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
{
  "script" : "ctx._source.age += 5"
}
'
GET /customer/_doc/1?pretty
​

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作 5-2 删除文档

# 删除指定文档2
DELETE /customer/_doc/2?pretty
​
curl -X DELETE "localhost:9200/customer/_doc/2?pretty"
​
GET /customer/_doc/2?pretty

 ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

 ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

 

 

 

 

5-3 文档的批量处理

# 批量调用指定索引的2个文档
POST /customer/_doc/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作

# 更新第一个文档,删除第二个文档
POST /customer/_doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

ElasticSearch - 分布式全文检索引擎 - 概念介绍及基本操作


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • Windows简单部署Exceptionless
    部署准备Elasticsearch、Exceptionless.API、Exceptionless.UI、URLRewrite、.NET运行时 1、安装ElasticSearch1 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 一:跨域问题1、同源策略(浏览器的安全策略)    只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了  2、c ... [详细]
author-avatar
Kevinczp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有