Elasticsearch基本语法

一、创建文档索引

1、语法格式

PUT /{index}/{type}/{id}
{
  "field": "value",
  ...
}

_index:文档存放在哪里
_type:文档表示的对象类别
_id:文档唯一标识

2、示例

PUT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
}

创建索引website,并在索引下创建blog类型,并添加id为123的博文

3、响应

{
    "_index": "websit",
    "_type": "blog",
    "_id": "123",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

result值为created表示创建

4、自动生成_id

修改请求方法PUTPOST,请求路径中不再包含id,例如:POST /website/blog/,Elasticsearch将根据自动生成策略生成id。同时,这种策略是可以自行配置修改的。

二、获取文档

1、语法

GET /{index}/{type}/{id}?pretty

请求方法:GET

2、示例

GET /website/blog/123?pretty

pretty:格式化返回格式(_source值原样输出)

3、响应

{
    "_index": "websit",
    "_type": "blog",
    "_id": "123",
    "_version": 1,
    "found": true,
    "_source": {
        "title": "My first blog entry",
        "text": "Just trying this out...",
        "date": "2014/01/01"
    }
}

found:该值表示是否获取到匹配结果,true-匹配到,false-未匹配到

4、指定数据返回

GET /website/blog/123?_source

当仅需要获取文档信息时,通过_source关键字进行过滤。

GET /website/blog/123?_source=title,text

通过_source参数也可以指定需要返回的数据,此处为只返回title text内容,关键字以,分隔。

三、更新文档

1、执行步骤

1、从旧文档构建 JSON
2、更改该 JSON
3、删除旧文档
4、索引一个新文档

2、示例

PUT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2018/01/01"
}

/website/blog/123将标识文档的唯一性,通过再次PUT会更新对应文档信息,这实际上更像是对原索引文件的一种替换并从新进行索引。

3、响应

{
  "_index":   "website",
  "_type":    "blog",
  "_id":      "1",
  "_version": 2
  "created":  false
}

修改后版本号_version增加

4、update关键字
使用_update关键字指令对文档进行更新是更好的一种方式。
例如:

POST /website/blog/1/_update
{
   "doc" : {
      "tags" : [ "testing" ],
      "views": 0
   }
}

在此示例中,我们通过在url后面追加_update进行文档更新,同时传递我们需要更新的内容。
此处为文档/website/blog/1添加了tags views和对应的值。

5、脚本部分更新文档

脚本更新同样为文档的更新提供了便捷,处理更新也变得更加灵活,此处只做简单记录。

POST /website/blog/1/_update
{
   "script" : "ctx._source.views+=1"
}

通过关键字script进行脚本的定义。

四、删除

1、语法

DELETE /{index}/{type}/{id}

2、示例

DELETE /website/blog/123

删除/website/blog/123文档

3、响应

{
  "found" :    true,
  "_index" :   "website",
  "_type" :    "blog",
  "_id" :      "123",
  "_version" : 3
}

如果删除文档不存在,则found值为false

注:本文内容来源于《Elasticsearch: 权威指南》

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,125评论 2 89
  • 刘润五分钟商学院最后一课听完了,确实受益匪浅,希望对以后的日子有所帮助。
    勇者_08ce阅读 1,066评论 0 0
  • 这是一封信的形式,我想要找一个人。 你好,吴启央: 我是… 我是什么身份呢, 我是宝宝。 昨晚梦见这个城...
    吴启央阅读 2,047评论 0 1
  • 不可说转阅读 1,150评论 0 0