ElasticSearch入门学习-基础示例(1)

基于 ElasticSearch-6.1.2

关于文档元数据

参考官方权威指南 文档元数据

一个文档有三个必须的元数据元素:

  • _index:表示文档存放在哪个 index 中;
  • _type:文档表示的对象类型;
  • _id:文档的唯一标识;

1. 索引新文档

通过使用 index API,使得文档可以被 索引 -- 即存储文档,以及使得文档可以被搜索。

1.1 使用自定义的ID

以下为索引一篇blog的例子,其中:index 为 website,类型为 blog,自定义的ID为 123

PUT /website/blog/123 HTTP/1.1
{    "date": "2014/01/01", 
    "text": "Still trying this out...", 
    "title": "My second blog entry"}

ES 的响应体如下:

HTTP/1.1 201 Created
Location: /website/blog/123
content-encoding: gzip
content-length: 143
content-type: application/json; charset=UTF-8

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

在 ES 中,每个文档都会有个版本号(响应中的 _version 字段),每次修改和删除,_version 都会自增。

1.2 使用 ES 自动生成的ID

采用 POST 提交索引请求:

POST /website/blog/ HTTP/1.1

{    "date": "2014/01/01", 
    "text": "Still trying this out...", 
    "title": "My second blog entry"
}

如下为 ES 的响应:

HTTP/1.1 201 Created
Location: /website/blog/UALcG2EBr-dnzPFB0zH1
content-encoding: gzip
content-length: 165
content-type: application/json; charset=UTF-8

{    "_id": "UALcG2EBr-dnzPFB0zH1", 
    "_index": "website", 
    "_primary_term": 1, 
    "_seq_no": 0, 
    "_shards": {        "failed": 0, 
        "successful": 1, 
        "total": 2
    }, 
    "_type": "blog", 
    "_version": 1, 
    "result": "created"}

除了 _id 是 ES 自动生成的之外,其他响应字段都和上面的类似。

自动生成的 ID 是 URL-safe、 基于 Base64 编码且长度为20个字符的 GUID 字符串。 这些 GUID 字符串由可修改的 FlakeID 模式生成,这种模式允许多个节点并行生成唯一 ID ,且互相之间的冲突概率几乎为零。

2. 检索文档

2.1 检索指定ID的文档

查询 ID 为 123 的 blog 的请求:

GET /website/blog/123?pretty HTTP/1.1

请求后面的 pretty 参数使得 ES 在输出时调用 prety-print 功能,使得 JSON 响应体更加可读。

ES 响应如下:

HTTP/1.1 200 OK
content-encoding: gzip
content-length: 173
content-type: application/json; charset=UTF-8

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

响应体中的 {"found": true} 表示文档已经检索到,如果没有指定的文档,则会返回 found = false,如下:

GET /website/blog/124?pretty HTTP/1.1

HTTP/1.1 404 Not Found
content-encoding: gzip
content-length: 87
content-type: application/json; charset=UTF-8

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

2.2 返回文档的一部分

如下只返回 blog 的标题字段,而不是默认的返回所有字段:

GET /website/blog/123?pretty&_source=title HTTP/1.1

HTTP/1.1 200 OK
content-encoding: gzip
content-length: 136
content-type: application/json; charset=UTF-8

{    "_id": "123", 
    "_index": "website", 
    "_source": {        "title": "My second blog entry"
    }, 
    "_type": "blog", 
    "_version": 1, 
    "found": true}

2.3 只返回文档内容,不需要返回元信息

GET /website/blog/123/_source?pretty HTTP/1.1

HTTP/1.1 200 OK
content-encoding: gzip
content-length: 113
content-type: application/json; charset=UTF-8

{    "date": "2014/01/01", 
    "text": "Still trying this out...", 
    "title": "My second blog entry"}

原文地址:http://blog.51cto.com/quietmadman/2063586

时间: 2024-08-30 03:22:45

ElasticSearch入门学习-基础示例(1)的相关文章

Python自学入门学习基础之一: 列表和元组

本人从事Python多年,有好多小伙伴加了我之后说:有没有相对来说简单点的教程,你写的一些大项目我们小编看不懂!!今天我就发一篇小白入门学习之一的基础,列表和元祖,欢迎大家订阅公众号:Python从程序猿到程序猿,或者加 ,山君:49130.8659,编码:柯西 ...编码:柯西,,我会分享爬虫或者web从0基础到项目实战的一系列的视频资料,保证可以让你自学成才. 列表 首先,列表属于序列,那么序列类型可用如下内建函数-- list(iter):把可迭代对象转换为列表. str(obj):把ob

Elasticsearch入门学习(二):简单的入门学习

一.ES一些概念 索引 _inde,文档存储的地方,类似于关系型数据中的数据库. 事实上,数据被存储和索引在分片中,索引仅仅是一个把一个或者多个分片分组在一起的逻辑空间. 索引名字必须是全部小写,不允许以下划线开头,不能包含逗号. 文档 文档id是一个字符串,与_index组合时,就可以在ElasticSearch中唯一标识一个文档.创建文档时,可以自定义_id,也可以让ES帮助自动生成. 二.使用postman入门学习 创建索引 创建索引库的格式为:使用put请求:ip:9200/{index

Elasticsearch入门学习(四):使用javaAPI学习ES

一.Maven依赖 <!--刚开始少这个包创建索引失败 Validation Failed: 1: type is missing; 官方文档并没有给这个提示--> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.1.0</version> </depen

Elasticsearch入门学习(一):安装ES7.0.1

一.Elasticsearch介绍 之前有学习使用过Solr.Elasticsearch也是基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.官方客户端在Java..NET(C#).PHP.Python.Apache Groovy.Ruby和许多其他语言中都

[转载] SSH入门学习基础教程

在Linux系统中,OpenSSH是目前最流行的远程系统登录与文件传输应用,也是传统Telenet.FTP和R系列等网络应用的换代产品.其 中,ssh(Secure Shell)可以替代telnet.rlogin和rsh,scp(Secure Copy)与sftp(Secure FTP)能后替代ftp. OpenSSH采用密钥的方式对数据进行加密,确保数据传输的安全.在正式开始传输数据之前,双方首先要交换密钥,当收到对方的数据时,再利用密钥和相应的程序对数据进行解密.这种加密的数据传输有助于防止

Elasticsearch入门学习(三):集群的搭建

一.集群的一些概念 集群 一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载.当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据.ElasticSearch中可以监控很多信息,有一个最重要的就是集群健康.集群健康有三个状态:green(所有主要分片和复制分片都可用),yellow(所有主要分片可用,但不是所有复制分片都可用),red(不是所有的主要分片都可用). 节点 一个节点node就是一个ElasticSearch的实例.

APS.NET MVC入门-运行基础示例

1. 关键词--路由 配置整个Web系统的路径结构,一般在 Global.asax.cs 中执行 RouteConfig.RegisterRoutes. public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "De

[转]Membership三步曲之入门篇 - Membership基础示例

本文转自:http://www.cnblogs.com/jesse2013/p/membership.html Membership三步曲之入门篇 - Membership基础示例 Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Provider model Membership三步曲之高级篇 -  从Membership 到 .NET 4.5 之 A

鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组 1. 列表都可以存放一些什么东西?  我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. 2. 向列表增加元素有哪些方法?  三种方法想列表增加元素,分别是:append().extend() 和 insert().    3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?  append() 方法是将