初识

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"}}

最新文章

  1. React Native 之 View使用
  2. 关于baseflight cleanflight naze32不能解锁的办法
  3. Javascript中判断数组的正确姿势
  4. 3D开发的基本知识
  5. CSS3学习笔记(新属性)
  6. poj 1469(二分图 最大匹配)
  7. eclipse主题插件
  8. C++ Primer 学习笔记_41_STL实践与分析(15)--先来看看算法【下一个】
  9. why do we need virtual methods in C++?
  10. Oracle-函数大全
  11. TF Multi-GPU single input queue
  12. 初学Java Web(5)——cookie-session学习
  13. 使用Verilog HDL语言注意事项
  14. LeetCode122.买卖股票的最佳时机II
  15. (转)基于C#的socket编程的TCP异步实现
  16. php 数组排序 按照某字段
  17. requestAnimationFrame 持续动画效果
  18. codeforces 798B - Mike and strings
  19. html5 页面基本骨架
  20. Orchard运用 - 如何删除部分内容显示

热门文章

  1. ssh推送.py程序到服务器端运行
  2. eclipse中查看安装的所有插件,并选择性的将其卸载
  3. oracle 在存储过程或函数中得到异常sql
  4. CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器?
  5. 20155207 EXP8 Web基础
  6. 20155313 杨瀚 《网络对抗技术》实验五 MSF基础应用
  7. 20155339 Exp8 Web基础
  8. EAS_BI(扩展报表)
  9. Dynamics 365 支持使用Web Api 通过名称来检索元数据
  10. C#Unit单元测试之读取Web.config文件