1.document的全量替换、强制创建以及lazy delete机制
• 如果document的id不存在,那么就是创建,如果以及存在,那么就是全量创建
• 如果你不想做替换操作,而是希望做创建操作,那么可以指定命令为创建(即强制创建操作)
语法:两种语法
1)PUT /index/type/id?op_type=create
2)PUT /index/type/id?_create
• delete删除的原理
命令:DELETE /test_index/test_type/2
此时如果执行get操作就查找不到数据了。但是实际上,delete不会进行物理删除,只会将其标记为deleted,当数据越来越多的时候,在后台自动删除。
2.query 和 filter 的区别
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2019-01-01" }}}
]
}
}
}
这个查询包括两部分:query 和 filter。两者都可以写查询条件,而且语法也类似。区别在于,query 上下文的条件是用来给文档打分的,匹配越好 _score 越高;filter 的条件只产生两种结果:符合与不符合,后者被过滤掉。
所以当查询的时候,该写 query,还是 filter,应该有个初步的认识了。