ElasticSearch的介绍及基本restful请求的使用

1、 ElasticSearch简介

1.1、什么是ElasticSearch

Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Elasticsearch和我们熟悉的solr框架相同 底层都是 luence实现,他们最大的区别是Elasticsearch能够简单实现分布式,solr需要另外的插件帮助。并且Elasticsearch支持restfulapi的访问,用起来更加方便。

1.2、ElasticSearch的特点

(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公 司;也可以运行在单机上
(2)将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;
(3)开箱即用的,部署简单
(4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理

1.2、ElasticSearch与关系型数据库的对应关系

ElasticSearch他包含 索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

ElasticSearchMysql
索引(index)数据库(databases)
类型(type)表(table)
文档(document)行(row)

什么是ElasticSearch中的索引
它其实有两种意思

  • 当它作为名词索引,那就是一个索引库,对应关系数据库中的一个数据库
  • 当它作为动词的时候,那就把数据,把一个文档经过索引操作存在索引库,这么建立索引的一个过程。

2、本地安装ElasticSearch

可以到官网下载安装包 他开箱立即用,下载完成之后,解压就可以使用。解压之后,命令窗口,进入它的bin目录,执行elasticsearch命令

D:\afiles\elasticsearch-5.6.8\bin>elasticsearch
[2019-07-20T10:56:49,964][INFO ][o.e.n.Node               ] [] initializing ...
[2019-07-20T10:56:50,164][INFO ][o.e.e.NodeEnvironment    ] [FYiTvOy] using [1] data paths, mounts [
[(D:)]], net usable_space [167.3gb], net total_space [300gb], spins? [unknown], types [NTFS]
[2019-07-20T10:56:50,165][INFO ][o.e.e.NodeEnvironment    ] [FYiTvOy] heap size [1.9gb], compressed
ordinary object pointers [true]
[2019-07-20T10:56:50,170][INFO ][o.e.n.Node               ] node name [FYiTvOy] derived from node ID
 [FYiTvOycR2GeR8IsQOaUtA]; set [node.name] to override
[2019-07-20T10:56:50,171][INFO ][o.e.n.Node               ] version[5.6.8], pid[7164], build[688ecce
/2018-02-16T16:46:30.010Z], OS[Windows 7/6.1/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit
Server VM/1.8.0_25/25.25-b02]
[2019-07-20T10:56:50,172][INFO ][o.e.n.Node               ] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseC
oncMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+Alwa
ysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.perm
issionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.n
etty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true,
-Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Delasticsearch, -Des.path.home=D:\afiles\e
lasticsearch-5.6.8]
[2019-07-20T10:56:52,644][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [aggs-matrix-sta
ts]
[2019-07-20T10:56:52,645][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [ingest-common]
[2019-07-20T10:56:52,652][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [lang-expression
]
[2019-07-20T10:56:52,656][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [lang-groovy]
[2019-07-20T10:56:52,657][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [lang-mustache]
[2019-07-20T10:56:52,657][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [lang-painless]
[2019-07-20T10:56:52,658][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [parent-join]
[2019-07-20T10:56:52,658][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [percolator]
[2019-07-20T10:56:52,658][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [reindex]
[2019-07-20T10:56:52,659][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [transport-netty
3]
[2019-07-20T10:56:52,659][INFO ][o.e.p.PluginsService     ] [FYiTvOy] loaded module [transport-netty
4]
[2019-07-20T10:56:52,660][INFO ][o.e.p.PluginsService     ] [FYiTvOy] no plugins loaded
[2019-07-20T10:56:58,481][INFO ][o.e.d.DiscoveryModule    ] [FYiTvOy] using discovery type [zen]
[2019-07-20T10:56:59,662][INFO ][o.e.n.Node               ] initialized
[2019-07-20T10:56:59,663][INFO ][o.e.n.Node               ] [FYiTvOy] starting ...
[2019-07-20T10:57:01,572][INFO ][o.e.t.TransportService   ] [FYiTvOy] publish_address {127.0.0.1:930
0}, bound_addresses {127.0.0.1:9300}, {[::1]:9300}
[2019-07-20T10:57:04,660][INFO ][o.e.c.s.ClusterService   ] [FYiTvOy] new_master {FYiTvOy}{FYiTvOycR
2GeR8IsQOaUtA}{Ja-yOBMATXC9k873e8Bv4g}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-mast
er ([0] nodes joined)
[2019-07-20T10:57:04,740][INFO ][o.e.g.GatewayService     ] [FYiTvOy] recovered [0] indices into clu
ster_state
[2019-07-20T10:57:05,626][INFO ][o.e.h.n.Netty4HttpServerTransport] [FYiTvOy] publish_address {127.0
.0.1:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200}
[2019-07-20T10:57:05,627][INFO ][o.e.n.Node               ] [FYiTvOy] started

启动过程中,出现了两个端口 一个是9200,另外一个是9300

9300是java开发时候使用的端口号
9200是java以为 访问elasticseach使用的端口,比如用restful访问 用head插件等

启动成功之后,进入浏览器输入http://localhost:9200

在这里插入图片描述
如果看到返回了json串,那就安装成功。

ElasticSearch的restFul api的基本使用

Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。ELasticsearch使用Javascript对象符号(JavaScript Object Notation),也就是JSON,作为文档序列化格式。

创建一个索引库(index)

发送请求http://localhost:9200/[索引库的名称] 请求方式PUT


在这里插入图片描述
响应的json串代表创建成功。

创建一个文档对象


发送请求http://localhost/[索引库名称]/[对象类型]/[ID标识] 请求方式PUT
提交一个json格式的user对象

{
	"username":"jack",
	"age":12,
	"nickname": "钢铁侠",
	"sex": "男",
	"interest": "我喜欢泡妞"
}

在这里插入图片描述
重复上面的操作,再多添加几个对象,方便之后的查询。
http://localhost:9200/myindex/user/2

{
	"username":"mick",
	"age":14,
	"nickname": "钢铁侠",
	"sex": "男",
	"interest": "我喜欢飞行"
}

http://localhost:9200/myindex/user/3

{
	"username":"mick",
	"age":23,
	"nickname": "绿巨人",
	"sex": "男",
	"interest": "我喜欢生气"
}

2、search搜索文档
http://localhost:9200/[索引库名称]/[类型] 提交方式 GET
在这里插入图片描述
3、搜索全部文档信息
http://localhost:9200/[索引库名称]/[类型] 提交方式 GET
例:查询所有user文档信息

http://localhost:9200/myindex/user/_search
{
    "took": 137,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 3,
        "max_score": 1,
        "hits": [
            {
                "_index": "myindex",
                "_type": "user",
                "_id": "2",
                "_score": 1,
                "_source": {
                    "username": "mick",
                    "age": 14,
                    "nickname": "钢铁侠",
                    "sex": "男",
                    "interest": "我喜欢飞行"
                }
            },
            {
                "_index": "myindex",
                "_type": "user",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "username": "jack",
                    "age": 12,
                    "nickname": "钢铁侠",
                    "sex": "男",
                    "interest": "我喜欢泡妞"
                }
            },
            {
                "_index": "myindex",
                "_type": "user",
                "_id": "3",
                "_score": 1,
                "_source": {
                    "username": "mick",
                    "age": 23,
                    "nickname": "绿巨人",
                    "sex": "男",
                    "interest": "我喜欢生气"
                }
            }
        ]
    }
}

4、按条件查找
http://localhost:9200/[索引库名称]/_search?q=[查询条件]
例如:查询nickname为緑巨人的对象
在这里插入图片描述
5、删除文档
http://localhost:9200/[索引库名称]/[删除文档id] 提交方式DELETE
例如删除 id为1的文档对象
在这里插入图片描述
修改文档
http://localhost:9200/[索引库名称]/[修改id] ··提交方式PUT
例如修改 id为2对象的信息为

	{
		 "username": "mick2",
        "age": 14,
        "nickname": "钢铁侠2",
        "sex": "男2",
        "interest": "我喜欢飞行2"
        }

在这里插入图片描述
显示修改成功
参考:ElasticSearch官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值