Elasticsearch中document的基础知识
写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
参考内容:
《Elasticsearch顶尖高手系列-快速入门篇》,中华石杉
--------------------------------------------------------------------
主要内容包括:
- document的核心元数据
- document id的手动指定和自动生成
- document的_source元数据以及定制返回结果
--------------------------------------------------------------------
1、document的核心元数据
document的核心元数据有三个:_index、_type、_id
(1.1) _index元数据
- 代表一个document存放在哪个index中
- 类似的数据放在一个索引中,非类似的数据放在不同的索引中:product index(包含了所有的商品)、sales index(包含了所有的商品销售数据)、inventory index(包含了所有库存的相关数据)
- index中包含了很多类似的document: 类似是什么意思呢,其实指的就是说,这些document的fields很大一部分是相同的,你说你放了3个document,每个document的fields都完全不一样,这就不是类似了,就不太适合放到一个index里面去了
- 索引名称必须是小写,不能用下划线开头,不包含逗号
(1.2) _type元数据
- 代表document属于index的哪个类别
- 一个索引通常会划分为多个type,逻辑上对index有些许不同的几类数据进行分类
- type名称可以是大写或者小写,但是同时不能用下划线开头,不能包含逗号
(1.3) _id元数据
- 代表document的唯一标识,与_index和_type一起可以起唯一标识和定位一个document
- 我们可以手动指定document的id,也可以不指定,由es自动为我们创建一个id
--------------------------------------------------------------------
2、document id的手动指定和自动生成
(2.1)、手动指定document id
根据应用情况来说,是否满足手动指定document id的前提:一般来说,是从某些其他系统中导入一些数据到es时会采取这种方式,就是系统中已有数据的唯一标识,作为es中的document的id
语法格式为:
put /index/type/id
{
"json"
}
(2.2)、自动生成document id
语法格式:
post /index/type
{
"json"
}
自动生成的id,长度为20个字符,URL安全、base64编码、GUID、分布式系统并行生成时不可能发生冲突。
--------------------------------------------------------------------
3、document的_source元数据以及定制返回结果
(3.1)、_source元数据
首先我们往es中添加一条数据:
PUT /test_index/test_type/1
{
"test_field1":"test field1",
"test_field2":"test field2"
}
查询这条数据:
GET /test_index/test_type/1
返回结果:
{
"_index": "test_index",
"_type": "test_type",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"test_field1": "test field1",
"test_field2": "test field2"
}
}
_source元数据,就是说,我们在创建一个document的时候,使用的那个放在request body中的json串,默认情况下,在get的时候会原封不动的给我们返回。
(3.2)、定制返回结果,指定_source中返回哪些field
GET /test_index/test_type/1?_source=test_field2
返回结果:
{
"_index": "test_index",
"_type": "test_type",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"test_field2": "test field2"
}
}
Elasticsearch中document的基础知识的更多相关文章
- day29—JavaScript中DOM的基础知识应用
转行学开发,代码100天——2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ...
- ASP.NET中的C#基础知识
ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...
- MySQL中索引的基础知识
本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...
- javascript中BOM部分基础知识总结
一.什么是BOM BOM(Browser Object Document)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管 ...
- Jquery源码中的Javascript基础知识(三)
这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = fun ...
- JavaScript中BOM的基础知识总结
一.什么是BOM BOM(Browser Object Model)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管理窗口 ...
- Java中浮点数的基础知识
偶然查看Math.round的JDK public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float val ...
- Android中的一些基础知识(三)
最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 在TextView中显示图像(使用< img>标签) 在TextView中显示图片的方法有许 ...
- Android中的一些基础知识(二)
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...
随机推荐
- 【技巧总结】Penetration Test Engineer[1]-Basic
1.渗透测试基础 1.1.渗透测试分类 黑盒测试:从远程网络位置来评估目标网络基础设施,没有任何相关信息 白盒测试:内部发起,了解到关于目标环境的所有内部与底层知识 灰盒测试:结合两者优势,根据对目标 ...
- Django-自动HTML转义
一.自动HTML转义 从模板生成HTML时,总会有变量包含影响最终HTML的字符风险,例如,考虑这个模板的片段: Hello, {{ name }} 起初,这是一种显示用户名的无害方式,但考虑用户输入 ...
- Mac上删除不了的文件,Windows上也粉碎不了怎么办?
推荐一个Mac上的软件:Tuxera Disk Manager 用法很简单:选择删除文件原来所在的文件进行维护就可以了. 维护之后,在废纸篓中清除,成功.
- GitHub安装和使用
GitHub是一个基于git的代码托管平台,付费用户可以建私人仓库,一般的免费用户只能使用公共仓库,也就是代码要公开. Github 由Chris Wanstrath, PJ Hyett 与Tom P ...
- js面试题之求数组最值
今天继续分享js常见的面试题,求数组最大值,最小值,这里列举4种常见解法,还有其他方法也可以实现,读者知道可以私信我,我将把意见列举到博客中,欢迎提出意见. 第一种,利用数组排序 var arr=[3 ...
- Oracle学习笔记:ORA-22992 cannot use LOB locators selected from remote tables
通过DB_LINK访问远程表的时候出现 ORA-22992: cannot use LOB locators selected from remote tables 错误. 原因:因为表中含有clob ...
- gtk+学习笔记(七)
今天被一个文本框坑了,基本设置什么的都对,但是就是无法显示中文,按钮名称都可以显示中文,先介绍下文本框的基本函数吧. GtkWidget *gtk_text_view_new(void);新建一个文本 ...
- NOIP2018初赛 解题报告(C++普及)
第24届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2018 年 10 月 13 日 14:30~16:30 选手注意: 1.试题纸共有 7 页,答题纸共有 2 页,满分 100 ...
- 【BZOJ】1061: [Noi2008]志愿者招募
题解 可能是世界上最裸的一个单纯形 (话说全幺模矩阵是啥我到现在都不知道) 假装我们已经看过了算导,或者xxx的论文,知道了单纯形是怎么实现的 扔一个blog走掉..https://www.cnblo ...
- Ionic实战八:ionic登陆页面源码
onic登陆页面模板源码,可以用于ionic开发中登陆页面制作或者参考 下面是此模板的一些页面 此模板免费提供给大家 登陆用户名和密码都是 phonegap100