ElasticSearch 简介
Elasticsearch是一个近实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。ElasticSearch 是一个基于 Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java开发的,并作为 Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
ElasticSearch 特点
1)可以作为一个大型分布式集群(数百台服务器)技术,处理 PB级数据,服务大公司;也可以运行在单机上
(2)将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;
(3)开箱即用的,部署简单
(4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理
ElasticSearch 体系结构
下表是 Elasticsearch 与 MySQL 数据库逻辑结构概念的对比
Elasticsearch | 关系型数据库 Mysql |
---|---|
索引(index) | 数据库(databases) |
类型(type) | 表(table) |
文档(document) | 行(row) |
下载安装
下载 ElasticSearch 5.6.8 版本https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-8资源配套软件中也提供了安装包无需安装,解压安装包后即可使用
在命令提示符下,进入 ElasticSearch 安装目录下的 bin 目录,执行命令
elasticsearch
即可启动
9300部署应用端口 9200api带哦用端口
。我们打开浏览器,在地址栏输入 http://127.0.0.1:9200 即可看到输出结果
{
"name" : "WHc9-q3",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "046IGPSvTHms9oMPgExWnA",
"version" : {
"number" : "5.6.8",
"build_hash" : "688ecce",
"build_date" : "2018-02-16T16:46:30.010Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
apipost 或者 Postman REST API
Postman 调用 REST API
新建索引
例如我们要创建一个叫 bookindex 的索引 ,就以
put 方式提交http://127.0.0.1:9200/bookindex/
一个索引库相当一个数据库
新建文档
新建文档:
post 方式提交 http://127.0.0.1:9200/bookindex/book
body
{
"name":"java23中涉及模式",
"author":"某某某"}
返回结果如下:
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnIjeo30Qeaxa168o",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
id 是由系统自动生成的。
查询某索引某类型的全部数据,以
get 方式请求
http://127.0.0.1:9200/bookindex/book/_search返回结果如下:
{
"took": 114,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnIjeo30Qeaxa168o",
"_score": 1,
"_source": {
"name": "java23中涉及模式",
"author": "某某某"
}
},
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnsKYo30Qeaxa168p",
"_score": 1,
"_source": {
"name": "solr集成",
"author": "某某某"
}
},
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8Ynw60o30Qeaxa168q",
"_score": 1,
"_source": {
"name": "springboot精通",
"author": "某某某"
}
}
]
}
}
修改文档
以 put 形式提交以下地址
http://127.0.0.1:9200/bookindex/book/AW8YnIjeo30Qeaxa168o
body
{
"name":"java的23中设计模式",
"author":"某某某某"}
返回结果
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnIjeo30Qeaxa168o",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": false
}
如果我们在地址中的 ID 不存在,则会创建新文档
以 put 形式提交以下地址:
http://127.0.0.1:9200/bookindex/book/
{
"name":"tomcat调优",
"author":"某某某某"}
返回
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnIjeo30Qeaxa168o",
"_score": 1,
"_source": {
"name": "java的23中设计模式",
"author": "某某某某"
}
},
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnsKYo30Qeaxa168p",
"_score": 1,
"_source": {
"name": "solr集成",
"author": "某某某"
}
},
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8Ynw60o30Qeaxa168q",
"_score": 1,
"_source": {
"name": "springboot精通",
"author": "某某某"
}
}
]
}
}
再次查询,看是否有新增的这条文档
http://127.0.0.1:9200/bookindex/book/_search
基本匹配查询
根据某列进行查询
get 方式提交下列地址:
http://127.0.0.1:9200/bookindex/book/_search?q=name:java
返回
{
"took": 23,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.25811607,
"hits": [
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnIjeo30Qeaxa168o",
"_score": 0.25811607,
"_source": {
"name": "java的23中设计模式",
"author": "某某某某"
}
}
]
}
}
模糊查询
我们可以用*代表任意字符:
http://127.0.0.1:9200/bookindex/book/_search?q=name:*o*
返回
{
"took": 26,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8YnsKYo30Qeaxa168p",
"_score": 1,
"_source": {
"name": "solr集成",
"author": "某某某"
}
},
{
"_index": "bookindex",
"_type": "book",
"_id": "AW8Ynw60o30Qeaxa168q",
"_score": 1,
"_source": {
"name": "springboot精通",
"author": "某某某"
}
}
]
}
}
删除文档
根据 name 删除文档,删除 name 为 1 的文档
DELETE 方式提交
http://127.0.0.1:9200/bookindex/book/AW8YnsKYo30Qeaxa168p
再次查看全部是否还存在此记录