elasticsearch(2)一些注意点和一些关键词

1.NRT, 近实时,从写入数据到数据尅一被检索到有1秒的delay,基于es的查询可以达到毫秒级

2.Es的删除不是物理删除,只是标记成delelted 物理上没删除,当数据越来越多的时候才会删除,貌似和HbASE一样。

3.es通过version乐观锁控制并发

4.es的external version

用法:?version=1&version_type=external  区别:

原版version,只有当你提供的version与数据中的version一模一样的时候才能进行修改,而external_version只要大于数据中的version才能进行修改,

5、es可以利用groovy脚本

例子:

PUT /test_index/test_type/11
{
  "num" : 0,
  "tags" : []
}

 

需求:将num值进行+=1操作

POST /test_index/test_type/11/_update
{
  "script": "ctx._source.num += 1"
}

查询结果:

{
  "_index": "test_index",
  "_type": "test_type",
  "_id": "11",
  "_version": 2,
  "found": true,
  "_source": {
    "num": 1,
    "tags": []
  }
}

具体后续会单独起一章写

关键词

作用

例子

其他

_source

定制元数据

{

"_source":["name"]

}或者

get class/student/_search?_source=name

只返回name

 

 test_index/test_type/1/_update

 

partial update

put /test_index/test_type/1
{
  "name":"zhangsan",
  "sex":"male",
  "age":12
}
post test_index/test_type/1/_update
{
  "doc":{
    "sex":"female"
  }
}

只更改了female,如果使用

put /test_index/test_type/1
{
  "sex":"female"
}

则数据就会变成只有一个sex属性

不需要进行全量更新,不仅可以减少写的元素,同时因为发生变化都在shard中,所以速度比全量更新要快

 

retry_on_conflict在出现version发生并发冲突的时候会重试post test_index/test_type/1/_update?retry_on_conflict=5
{
  "doc":{
    "sex":"female"
  }
}
 
_bulk批量插入
POST _bulk
{ "index" : { "_index" : "test", "_type" : "_doc", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "_doc", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "_doc", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "_doc", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

1.可以节省网络通信

2.其中一条失败不影响其他

3.如果bulk size过大,性能反而会下降

4.json每个字段不能分行

_mget批量获取  
timeout规定必须返回时间get class/student/_search?timeout=10ms假设搜索1000条数据需要100ms,那么指定了这个参数就会只搜索出100条数据就返回。如果不指定,默认就会一直等待100ms,直到搜索出1000条数据
/*/*/id通配符搜索get class/st*/_searchclass 索引下以st开头的type数据
/_analyze测试分词器get /_analyze
{
  "analyzer":"standard",
  "text":"Text to Month"
}
 
对于不同的value类型,分词器不是同的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值