文档章节

elasticsearch 索引

鸡蛋炒馒头
 鸡蛋炒馒头
发布于 2017/03/29 18:32
字数 1080
阅读 83
收藏 1

 

elasticsearch 文档的元数据包括 _index, _type, _id 由这三个来确定唯一的 文档

节点 说明 规则
_index 文档存储的地方 这个名字必须是全部小写,不能以下划线开头,不能包含逗号
_type 文档代表的对象的类 可以是大写或小写,不能包含下划线或逗号
_id 文档的唯一标识 填写则用该id,不填写则默认生成

自定义Id 创建索引信息

curl -i -XPUT 'http://localhost:9200/website/blog/123' -d  '{"titile":"My first blog entry","text":"Just trying this out...","date":"2014/01/01"}'
相应的结果为:
HTTP/1.1 201 Created
Location: /website/blog/123
content-type: application/json; charset=UTF-8
content-length: 142

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

_index表示索引名字  _type 表示类型 _id是创建定义的id _version表示当前索引的类型对应的id 文件修改的版本 created:true 表示的是当前没有该_id对应的信息,创建成功;

result:表示当前的操作类型;

如果重新再执行上面的操作:

curl -i -XPUT 'http://localhost:9200/website/blog/123'?pretty -d  '{"titile":"My first blog entry","text":"Just trying this out...","date":"2014/01/01"}'
相应的结果为(这次我们进行格式化一下结果信息):
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 204

{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "123",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : false
}

这里与第一次访问的区别是:_version更改为2 result 为updated create:false 因为当前该文档已经存在,则进行的是更新操作,同时版本+1

自动生成_id(POST)

curl -i -XPOST 'http://localhost:9200/website/blog?pretty' -d '{"titile":"My first blog entry","text":"Just trying this out...","date":"2014/01/01"}'

返回的结果[_id 自动生成的唯一Id]:

HTTP/1.1 201 Created
Location: /website/blog/AVsY0ePfGKUJRi9UElzp
content-type: application/json; charset=UTF-8
content-length: 220

{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "AVsY0ePfGKUJRi9UElzp",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : true
}

获取索引内容信息方式:

curl -i -XGET 'http://localhost:9200/{_index}/{_type}/{_id}'

dome[fund为true表示存在 false表示不存在]:

如果存在该内容:

duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/website/blog/123?pretty'
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 225

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

如果不存在:

duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/website/blog/1232?pretty'
HTTP/1.1 404 Not Found
content-type: application/json; charset=UTF-8
content-length: 84

{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "1232",
  "found" : false
}

如果获取指定的字段则:

duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/website/blog/123?pretty&_source=titile,text'
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 198

{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "123",
  "_version" : 2,
  "found" : true,
  "_source" : {
    "titile" : "My first blog entry",
    "text" : "Just trying this out..."
  }
}

检查文档是否存在[HEAD]只是根据状态码确定:

存在返回的内容:
duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XHEAD 'http://localhost:9200/website/blog/123'
HTTP/1.1 200 OK
content-type: text/plain; charset=UTF-8
content-length: 0

不存在返回的内容:
duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XHEAD 'http://localhost:9200/website/blog/1233'
HTTP/1.1 404 Not Found
content-type: text/plain; charset=UTF-8
content-length: 0

创建索引id的时候检查,如果存在不创建[op_type和_create 表示的是:version为internal[内部]的版本的时候用,如果为下面对应的指定版本:version_type=external的时候不能添加 _create或者op_type]

curl -i -XPUT 'http://localhost:9200/website/blog/123?pretty&op_type=create' -d '{"title":"My first blog entry","text":"Just trying this out...","date":"2014/01/01"}'
或者:
curl -i -XPUT 'http://localhost:9200/website/blog/123/_create?pretty' -d '{"title":"My first blog entry","text":"Just trying this out...","date":"2014/01/01"}'

返回的结果为:
HTTP/1.1 409 Conflict
content-type: application/json; charset=UTF-8
content-length: 570

{
  "error" : {
    "root_cause" : [
      {
        "type" : "version_conflict_engine_exception",
        "reason" : "[blog][123]: version conflict, document already exists (current version [3])",
        "index_uuid" : "TpqzsMfFRxOON4WCYdXSsA",
        "shard" : "0",
        "index" : "website"
      }
    ],
    "type" : "version_conflict_engine_exception",
    "reason" : "[blog][123]: version conflict, document already exists (current version [3])",
    "index_uuid" : "TpqzsMfFRxOON4WCYdXSsA",
    "shard" : "0",
    "index" : "website"
  },
  "status" : 409
}

删除 DELETE:


curl -i -XDELETE 'http://localhost:9200/website/blog/_create'
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 144

{"found":true,"_index":"website","_type":"blog","_id":"_create","_version":2,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0}}

版本控制[修改版本的时候版本id只能大于原来的版本id否则报错]:

根据版本修改内容[修改版本为1的内容信息命令]:

curl -i -XPUT 'http://localhost:9200/website/blog/2?version=1&pretty' -d '{"title":"My first external blog entry","text":"This is a piece of cake..."}'

[修改版本 和内容的命令]

curl -i -XPUT 'http://localhost:9200/website/blog/2?version=5&version_type=external&pretty' -d '{"title":"My first external blog entry","text":"This is a piece of cake..."}'

 

© 著作权归作者所有

鸡蛋炒馒头
粉丝 2
博文 37
码字总数 14256
作品 0
浦东
后端工程师
私信 提问
Elasticsearch存储空间不够导致索引只读的解决方法

问题描述 今天发现当天的索引在ES中并没有创建,logstash中不停的报错: 索引变成了只读: es报错,es报错也是索引只读错误 解决办法 经过分析,发现是因为ES所在服务器磁盘空间太低引起,具...

傲娇字符
01/17
1K
0
Elasticsearch介绍和安装

版权声明:https://blog.csdn.net/weixin43814195?t=1 https://blog.csdn.net/weixin43814195/article/details/85275156 Elasticsearch 1.简介 1.1基本概念 Elasticsearch是基于Lucene的全文......

MIss.Fan
2018/12/27
0
0
CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分...

wujunqi1996
2018/07/14
0
0
ElasticSearch安装

ElasticSearch的安装 http://www.elasticsearch.org/下载最新的ElastiSearch版本。 解压下载文件。 cd到${esroot}/bin/,执行elasticsearch启动。 使用curl -XPOST localhost:9200/shutdown......

liuhao_sh
2015/08/13
232
0
Elasticsearch与Solr搜索引擎选型调研文档

Elasticsearch ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开...

小海bug
2018/06/28
259
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
17分钟前
2
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
4
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
13
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部