1 面向文档(document oriented)
存储在ES中的一条数据即是一个文档,类似数据库的一行数据。ES会索引每个文档的内容,以便搜索。
它使用的JSON格式。即我们将数据存储到ES中,实际上是将JSON格式的字符串发给了ES。
2 ES支持的数据类型及对应属性(
http://www.cnblogs.com/xing901022/p/5471419.html)。
2.1 简单类型
string:
2.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 进行模运算后得出的。