Last updated
Last updated
返回
严格递增的顺序号,每个文档一个,Shard级别严格递增,保证后写入的Doc的_seq_no大于先写入的Doc的_seq_no。
任何类型的写操作,包括index、create、update和Delete,都会生成一个_seq_no。
Elasticsearch中每个Doc都会有一个Version,该Version可以由用户指定,也可以由系统自动生成。如果是系统自动生成,那么每次Version都是递增1。
_primary_term 也和 _seq_no 一样是一个整数,每当 Primary Shard 发生重新分配时,比如重启,Primary 选举等,_primary_term 会递增 1。
Doc 的主键,在写入的时候,可以指定该Doc的ID值,如果不指定,则系统自动生成一个唯一的 UUID值。
常用参数
index - 索引名
q - 查询指定匹配 使用 Lucene 查询语法
from_ - 查询起始点 默认0
doc_type - 文档类型
size - 指定查询条数 默认10
field - 指定字段 逗号分隔
sort - 排序 字段:asc/desc
body - 使用Query DSL
scroll - 滚动查询
返回
Elasticsearch 中有一个重要的概念是 source,存储原始文档,也可以通过过滤设置只存储特定Field。
· took代表搜索执行时间(单位:毫秒);
· total代表本次搜索命中的文档数量;
· max_score为最大得分,代表文档匹配度;
· hits为搜索命中的结果列表,默认为10条。
bool有3类查询关系,must(都满足),should(其中一个满足),must_not(都不满足)
获取最小值
获取最大值
获取和
例子
获取平均值
指定需要返回的字段,类似sql语句的
range 中有 4 个字段:(g 是 greater 的缩写,t 是 than 的缩写,l 是 less 的缩写,e 是 equal 的缩写)可以单个或者多个一起使用
gt : 大于 >
lt : < 小于
gte : <= 大于等于
lte :<= 小于等于
should 可以连接多个不同的字段
terms只能连接一个字段的多个值
(1) 方式一:
Elasticsearch 中时间可以表示为now
, 也就是系统当前时间, 也可以是以||
结尾的日期字符串表示.
在日期之后, 可以选择一个或多个数学表达式:
+1h
—— 加1小时;
-1d
—— 减1天;
/d
—— 四舍五入到最近的一天.
下面是Elasticsearch支持数学表达式的时间单位:
说明: 假设系统当前时间now = 2018-10-01 12:00:00
:
now+1h
: now的毫秒值 + 1小时, 结果是: 2018-10-01 13:00:00
.
now-1h
: now的毫秒值 - 1小时, 结果是: 2018-10-01 11:00:00
.
now-1h/d
: now的毫秒值 - 1小时, 然后四舍五入到最近的一天的起始, 结果是: 2018-10-01 00:00:00
.
2018.10.01||+1M/d
: 2018-10-01
的毫秒值 + 1月, 再四舍五入到最近一天的起始, 结果是: 2018-11-01 00:00:00
方式二:
我们知道 ES 的索引数据是写入到磁盘上的。但这个过程是分阶段实现的,因为 IO 的操作是比较费时的。
当一个文档进入 ES 的初期, 文档是被存储到内存里的,默认经过 1s 之后, 会被写入文件系统缓存,这样该文档就可以被搜索到了,注意,此时该索引数据被没有最终写入到磁盘上。如果你对这 1s 的时间间隔还不满意, 调用 _refresh 就可以立即实现内存->文件系统缓存, 从而使文档可以立即被搜索到。
所以 refresh 实现的是文档数据从内存到文件系统缓存的过程。
y
年
M
月
w
星期
d
天
h
小时
H
小时
m
分钟
s
秒