elasticsearch(2) 数据操作——查询
一 文档
ES面向文档,并且使用JSON作为文档序列化格式,对于ES来说,文档特指根对象序列化成的JSON数据,以唯一ID标识并存储于ES中。
- 文档元数据
三个必须的元数据节点
1、_index 文档存储的地方
索引类似于关系数据库中的数据库,它是我们存储和索引关联数据的地方
2、_type 文档代表的对象的类
类似于关系型数据库中的表,每个类型都有自己的映射或者结构定义
3、_id 文档的唯一标识
与_index和_type组合可以在ES中唯一标识一个文档,可以自定义,也可以由ES自动生成
二 索引
1、使用自己的id
需要自己指定id,请求方式为PUT
示例:
请求 PUT 127.0.0.1:9200/{index}/{type}/{id} (这里取index为test,type 为test, id 为3)
参数:JSON数据
响应:
{
"_index": "test",
"_type": "test",
"_id": "3",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
可以看到响应中的_id与自己设置的一致
2、使用自增id
无需自己指定id,请求方式为POST
示例
请求 POST 127.0.0.1:9200/{index}/{type} (这里取index为test,type 为test)
参数:JSON数据
响应:
{
"_index": "test",
"_type": "test",
"_id": "WOTj8GYBuXRyDW5PpvRN",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
可以看到使用自增id,ES会随机生成一个uuid作为文档的id
三 获取文档
1、检索文档
想要从Elasticsearch中获取文档,我们使用同样的_index
、_type
、_id
,但是HTTP方法改为GET
示例:
GET 127.0.0.1:9200/test/test/4
响应
{
"_index": "test",
"_type": "test",
"_id": "4",
"_version": 2,
"found": true,
"_source": {
"hello": "world",
"author": "wuzhe"
}
}
响应中的_source 即我们放入的文档内容
found 表示文档存在
若检索一个不存在的文档,则响应为
{
"_index": "test",
"_type": "test",
"_id": "5",
"found": false
}
这时 found变成了false
2、检索部分文档
通常,GET
请求将返回文档的全部,存储在_source
参数中。但是可能你感兴趣的字段只是title
。请求个别字段可以使用_source
参数。多个字段可以使用逗号分隔:
示例
GET 127.0.0.1:9200/test/test/4?_source=hello
响应
{
"_index": "test",
"_type": "test",
"_id": "4",
"_version": 2,
"found": true,
"_source": {
"hello": "world"
}
}
这样就只能看到hello对应的内容了
3、检查文档是否存在
如果你想做的只是检查文档是否存在,对内容完全不感兴趣,可以使用HEAD
方法来代替GET
HEAD 127.0.0.1:9200/test/test/4
响应
若存在 状态码status为200
若不存在 状态码status为404
4、检索多个文档
如果想要查询多个文档,ES提供了一个mget
API可以将多次检索合并,避免了一次次检索的请求网络时间
mget
API参数是一个docs
数组,数组的每个节点定义一个文档的_index
、_type
、_id
元数据。如果你只想检索一个或几个确定的字段,也可以定义一个_source
参数:
示例 : POST 127.0.0.1:9200/_mget
请求参数:
{
"docs" : [
{
"_index" : "test",
"_type" : "test",
"_id" :
},
{
"_index" : "test",
"_type" : "test",
"_id" : ,
"_source": "hello"
},
{
"_index" : "test",
"_type" : "test",
"_id" :
}
]
}
响应
{
"docs": [
{
"_index": "test",
"_type": "test",
"_id": "",
"_version": ,
"found": true,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": ,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
},
{
"_index": "test",
"_type": "test",
"_id": "",
"_version": ,
"found": true,
"_source": {
"hello": "world"
}
},
{
"_index": "test",
"_type": "test",
"_id": "",
"found": false
}
]
}
可以看到响应体也包含一个docs
数组,每个文档还包含一个响应,它们按照请求定义的顺序排列。每个这样的响应与单独使用get
request响应体相同。
可以看到第三个文档不存在,但这不影响第一第二个文档的检索,每个文档的检索和报告都是独立的。
如果你想检索的文档在同一个_index
中(甚至在同一个_type
中),你就可以在URL中定义一个默认的/_index
或者/_index/_type
。
你依旧可以在单独的请求中使用这些值:
POST /test/test/_mget
{
"docs" : [
{ "_id" : 2 },
{ "_type" : "newtest", "_id" : 1 }
]
}
事实上,如果所有文档具有相同_index
和_type
,你可以通过简单的ids
数组来代替完整的docs
数组:
POST /test/test/_mget
{
"ids" : [ "2", "1" ]
}
elasticsearch(2) 数据操作——查询的更多相关文章
- ELK:ElasticSearch中有数据,Kibana查询不到数据
ElasticSearch中有数据,Kibana查询不到数据 多数原因就是Linux的时区问题, 在linux输入date查看当前时间是否根本地相对应,不对应那么你就来对了, 解决方案一. 这个选择的 ...
- elasticsearch(3) 数据操作-更新
一 更新整个文档 更新整个文档的方法和存放数据的方式是相同的,通过PUT 127.0.0.1/test/test/1 我们可以把test/test/1下的文档更新为新的文档 例: PUT 127.0 ...
- Elasticsearch删除数据操作,你必须知道的一些坑
前两天有同事打电话问我,说ES删除数据有没有什么坑? 我当时就问,是删索引还是删索引里的数据?她回答说是删数据,我说查出这些数据直接删除就好了,没有什么坑... 后来想想,关于ES数据的删除,之前确实 ...
- Database学习 - mysql 数据库 数据操作
mysql数据操作 查询语法 select * | field1,field1 ... from 表名 where 条件 group by 字段 having 筛选 order by 字段 limit ...
- Django 链接MySQL及数据操作
Django 链接MySQL Django创建的项目自带的数据库是SQLite3,我们想要链接MySQL的话,需要更改settings.py中的配置 1.在MySQL中创建好数据库,Django项目不 ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作
http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...
- Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
Elasticseach目前作为查询搜索平台,的确非常实用方便.我们今天在这里要讨论的是如何做数据备份和type删除.我的ES的版本是2.4.1. ES的备份,可不像MySQL的mysqldump这么 ...
- oracle-2-sql数据操作和查询
主要内容: >oracle 数据类型 >sql建表和约束 >sql对数九的增删改 >sql查询 >oracle伪例 1.oracle的数据类型 oracle数据库的核心是 ...
随机推荐
- npm配置国内镜像资源+淘宝镜像
将npm的注册表源设置为国内的镜像 1.国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度 2.国内优秀npm镜像推荐及使用:http://riny.net/2014/cnpm/ ...
- php(一)搭建php开发环境
1.下载php语言包 php作为一门语言,本身可以是一个纯绿色版的"文件夹"——称之为"php语言包".windows版的下载地址:https://window ...
- [leecode]---11.container with most water
description: Input: [1,8,6,2,5,4,8,3,7]Output: 49 思路1: 从(1,a1)开始向后算面积,需要两层n循环,时间复杂度n2 思路2: 找出数组中最大的数 ...
- 设置Oracle数据库开机自启动-亲试ok
1.oracle 用户下 修改$ORACLE_HOME/bin/dbstart [oracle@dev-oracle ~]$ vi /opt/oracle/app/oracle/product ...
- Hadoop 2.7.4 HDFS+YRAN HA增加datanode和nodemanager
当前集群 主机名称 IP地址 角色 统一安装目录 统一安装用户 sht-sgmhadoopnn-01 172.16.101.55 namenode,resourcemanager /usr/local ...
- js前端性能优化之函数节流和函数防抖
前言:针对一些会频繁触发的事件如scroll.resize,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能 节流: 节流:使得一定时间内只触发一次函数. 它和防抖动最 ...
- python note 4
1.使用命令行打开文件 t=open('D:\py\123.txt','r') t.read() 在python和很多程序语言中""转义符号,要想输出\要么多加一个\写成\ 要么在 ...
- 图书馆管理系统(C语言)
/* 实现的功能 * @ 1. 录入图书的信息 * @ 2. 给定图书的编号,显示该图书的详细信息 * @ 3. 给定作者的姓名,可以显示该作者所有的书 * @ 4. 给定出版社,可以显示该出版社出版 ...
- 设计模式之Factory模式(C++)
Factory模式具有两大重要的功能: (1).定义创建对象的接口,封装了对象的创建: (2).使具体化类工作延迟到了子类中. //Product.h #ifndef _PRODUCT_H_ #def ...
- Spark基本架构
Spark基本架构图如下: Client:客户端进程,负责提交作业. Driver:一个Spark作业有一个spark context,一个Spark Context对应一个Driver进程,作业的 ...