Elasticsearch随笔 01

translog一致性
  • ES索引的一致性通过translog来保证,就是即使内存中的数据没有来的及写入磁盘,ES重启后也会从translog中恢复数据。
  • 那么translog的一致性怎样保证呢?translog是日志文件,日志文件也有缓存,那么在translog在缓存时,OS挂了,怎么办?
  • translog也会周期性的sync到磁盘,参数:index.gateway.local.sync 控制刷新频率,默认5S,也就意味着极端情况下会丢失5S钟的事务数据。
  • 可以根据实际情况改这个参数,越小越安全,但是性能也越差。
_all和_source系统字段
  • _all 里存储着全部数据,搜索时不指明具体字段时就会搜索这个字段内的数据。
  • 如果不需要,可以禁用掉:

    "_all": {
      "enabled": false
    }
  • _source 里存储着这条记录的json内容,索引搜索时都用不到这个值,fetch时会从这里取字段数据,如果屏蔽掉,query出的结果就只有_id,啥都看不到,象时间序列DB等特殊场景下为提高性能可以使用,但象ELK这种系统,意义不大。

    "_source": {
      "enabled": false
    }
动态模板映射match,unmatch
  • 有时我们可能希望某一index/type下的某一批特定字段有相同的映射属性,那如果一个字段一个字段写就很麻烦。
  • 这时可以使用dynamic_templates的match,unmatch功能:

    PUT my_index
    {
      "mappings": {
        "my_type": {
          "dynamic_templates": [
            {
              "longs_as_strings": {
                "match_mapping_type": "string",
                "match":   "long_*",
                "unmatch": "*_text",
                "mapping": { "type": "long" } }
            }
          ]
        }
      }
    }
    
    PUT my_index/my_type/1
    {
      "long_num": "5", 
      "long_text": "foo" 
    }

    这个映射的意思就是:所有以long开头的,并且不是以text结果的字段类型都设置为long类型。
    long_num字段是long
    long_text字段是默认的sring

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值