ElasticSearch 概述
Elaticsearch,简称为 es, 是一个建立在全文搜索引擎框架 Apache Lucene? 基础上的开源搜索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。同时 Elasticsearch 是使用 Java 编写的,采用了 Lucene 来实现索引与搜索的功能。当你使用它做全文搜索时,只需要使用简单流畅的 RESTful API 即可,并不需要了解 Lucene 背后复杂的的运行原理。
目前 Elasticsearch 有很多地方超越了 Lucene,它不仅可以实现全文搜索功能,还可以完成以下工作:
分布式实时文档存储,并将每一个字段都编入索引,使其可以被搜索。
分布式实时分析与搜索引擎。
可以扩展到上百台服务器,处理 PB 级别的结构化或非结构化数据。
可以轻松地通过客户端或者任何你喜欢的程序语言与 Elasticsearch 的 RESTful API 进行通信
Elasticsearch 的上手是非常简单的。它附带了很多非常合理的默认值,这让初学者很好地避免一上手就要面对复杂的理论,安装完成就可以马上投入使用了。
[](()Elaticsearch 的安装与启动
1. 下载
Elasticsearch 在 Apache 2 license 下许可使用,可以免费下载、使用和修改。我们只需要访问 ElasticSearch 的官方地址: [https://www.elastic.co/products/elasticsearch]((),我们选择下载对应版本的压缩包就可以了。
2. 安装
这里我们选择的是安装 windows 版本的安装包,下载过安装包之后,选择一个文件夹位置将其解压,我们会看到如下目录:
bin: 启动文件
config: 配置文件(包括:log4j2 日志配置文件,jvm.options 虚拟机相关配置,elasticsearch.yml es 配置文件,默认 9200 端口)
在config/elasticsearch.yml配置文件中增加以下两句命令:
`http.cors.enabled: true`
`http.cors.allow-origin: "*"`
可以允许elasticsearch跨越访问
lib:相关 jar 包
logs:日志文件
modules:功能模块
plugins: 插件
3. 运行
双击 bin 目录下的 elasticsearch.bat 启动,这里要求和 Java 的 JDK1.8 以上
4. 访问端口
服务器的端口为 9200,我们只需要在浏览器网址栏输入 http://localhost:9200/就可以看到一串 json 字符串
5. 安装 ES 的图形化界面插件
安装可视化界面 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】
在此之前确定电脑上有 nodejs ,下载地址:[https://nodejs.org/en/download/](()
npm install -g grunt -cli
配置 npm
npm install
grunt server
1、下载插件,下载地址:[https://github.com/mobz/elasticsearch-head](()
2、启动前端 vue 项目
npm install
npm run start
open http://localhost:9100/
3、连接测试发现,存在跨域问题:配置 es
http.cors.enabled: true
http.cors.allow-origin: “*”
4、重启 es 服务器,然后再次连接
[](()ElasticSearch 相关概念(术语)
Elasticsearch 是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在 Elasticsearch 中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearch 比传统关系型数据库如下:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
1. 索引 index
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。
2. 类型 type
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
评论