您的位置:首页 > 其它

初识elasticsearch_1(基本概念和基本操作)

2017-12-04 11:42 483 查看

初识


ElasticSearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.本博客部分基于es的官方文档.es的官方文档网址如下:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html


基本概念

Cluster


Cluster是一种集群,它包含了一个或多个结点(Node),包含了我们要搜索的整个数据,并且在结点间提供了联合索引和搜索的功能.每个cluster需要有自己唯一的名称,可以只有一个Cluster,也可以有多个> Cluster,当然他们的名字是不同的.


Node


一个结点是Cluster中的一个部分,Node也会有自己的一个唯一标识,这个标识是一个UUID.通常Node在加入的时候可以指定它的Cluster.默认情况下所有Node都会加入一个叫做”Cluster”的集群


index


Index是多个具有一定相同特征的document的集合,在新建index的时候,它的标识名称在更新,删除都会用到,在一个Cluster中可以定义任意多的索引


document


Document是存储信息的基本单元.document使用JSON去表达其信息.


使用Cluster

查看所有索引:

GET /_cat/indices?v


创建一个index:

PUT /customer?pretty


创建一个文档:


其id为1,采用pretty的格式进行存储,指定type(doc),并且放入到一个index(customer)里面:


PUT /customer/doc/1?pretty
{
"name": "John Doe"
}


可以通过get进行查询:


GET /customer/doc/1?pretty


返回值如下所示,可以很轻松的看出id,source则是我们放进去的域的内容:


{
"_index": "customer",
"_type": "doc",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"name": "John Doe"
}
}


删除文档:

delete /customer?pretty


可以看出我们当前的命令的结构,都是如下格式的:

[请求方式] /[index名]/[type名]/[文档id]



更新文档:


可以通过连续插入同样id的文档完成对于文档更新的要求:


PUT /customer/doc/1?pretty
{
"name": "John Doe"
}

PUT /customer/doc/1?pretty
{
"name": "John Doe",
"age" : 23
}


当没有指定id的时候,es会给我们指定个随机数id并且作为返回值给我.

当我们做上面的操作的时候,es实际上删除了旧的文档,并且新建了新的文档给我们,因此不是直接更新,而是先删除,再更新.

还可以采用表达式进行更新:


POST /customer/doc/1/_update?pretty
{
"script" : "ctx._source.age += 5"
}


删除文档

DELETE /customer/doc/2?pretty


批量操作


Es可以使用_bulk的API去进行批量操作.

例如下面的操作创建了两个id为1,2的文档:


POST /customer/doc/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }


下面的操作,更新了id为1的document的name,删除了id为2的document


POST /customer/doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: