ElasticSearch-深入理解系列4-文档(Document)

1 面向文档(document oriented)
存储在ES中的一条数据即是一个文档,类似数据库的一行数据。ES会索引每个文档的内容,以便搜索。
它使用的JSON格式。即我们将数据存储到ES中,实际上是将JSON格式的字符串发给了ES。

2 ES支持的数据类型及对应属性( http://www.cnblogs.com/xing901022/p/5471419.html)。
2.1 简单类型
string2.x版本使用,5.x版本使用keyword(不分词)和text(分词)
  • 比较重要的参数:
index分析
  • analyzed(默认).则将会通过默认的standard分析器进行分析,中文需要使用IK进行分词
  • not_analyzed:则会将整个字段存储为关键词,常用于汉字短语、邮箱等复杂的字符串
  • no:则无法通过检索查询到该字段;

store存储
  • true 独立存储
  • false(默认)不存储,从_source中解析
Numeric
数值类型,注意numeric并不是一个类型,它包括多种类型,比如: long,integer,short,byte,double,floa t,每种的存储空间都是不一样的,一般默认推荐integer和float。 官方文档参考
重要的参数:
index分析
  • not_analyzed(默认) ,设置为该值可以保证该字段能通过检索查询到
  • no
store存储
  • true 独立存储
  • false(默认)不存储,从_source中解析
date
日期类型,该类型可以接受一些常见的日期表达方式, 官方文档参考
重要的参数:
index分析
  • not_analyzed(默认) ,设置为该值可以保证该字段能通过检索查询到
  • no
store存储
  • true 独立存储
  • false(默认)不存储,从_source中解析
format格式化
  • strict_date_optional_time||epoch_millis(默认)
  • 你也可以自定义格式化内容,比如
"date" : { "type" : "date" , "format" : "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }
IP
这个类型可以用来标识IPV4的地址, 参考官方文档
常用参数:
index分析
  • not_analyzed(默认) ,设置为该值可以保证该字段能通过检索查询到
  • no
store存储
  • true 独立存储
  • false(默认)不存储,从_source中解析
boolean
布尔类型,所有的类型都可以标识布尔类型, 参考官方文档
  • False: 表示该值的有:false, "false", "off", "no", "0", "" (empty string), 0, 0.0
  • True: 所有非False的都是true
重要的参数:
index分析
  • not_analyzed(默认) ,设置为该值可以保证该字段能通过检索查询到
  • no
store存储
  • true 独立存储
  • false(默认)不存储,从_source中解析

2.2 复合类型。
a) 多值字段(数组)
{ "tag" : [ "search" , "nosql" ]}
数组中的字段必须为相同类型。即字符串和日期不能混合使用
b)空字段
Lucene不能存放null,所以null被认为是空字段。
下面都为空字段而不被索引:
c)多层字段(or innerobject)
{"tweet" : "user" : {
"Elasticsearch is very flexible" ,
"id" : "@johnsmith" , "gender" : "male" , "age" : 26 ,
"name" : {
"full" : "John Smith" , "first" : "John" , "last" : "Smith"}}}
name即为内部对象。

内部对象索引,ES会将其转化为如下格式进行索引。


3 在ES默认每个字段都会被索引。

4 一个文档除了包含数据外,还包含元数据-三个必须字段

5 _index 类似关系数据库的数据库.
实际上我们的数据是被存储在分片中,索引只是把一个或者多个分片组织在一起的逻辑空间。但是对于我们来说,我们可以完全不关心这些。只需要知道Index即可,
6 _type 类型
在数据中,我们通常将相同类型的数据存储在一个表里,在ES中,将数据存储在同一个type中。

7 _id
7.1 一个字符串,通过结合_index,_type,我们可以唯一定位到文档。
7.2 _id可以自己指定,也可以让ES自动生成。
使用文档中的字段作为文档:
自己指定id时,对bulk接口有轻微的性能影响,因为这种情况下还需要解析每个文档。
7.3 数据存储在哪个分片也是通过_id 进行模运算后得出的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值