• elasticsearch基础


    elastic使用lucene建立索引的步骤中,需要文件系统缓存需要同步到磁盘上。(多个segment->commit文件来维护)

    当建立历史数据时,并不要求太高的实时性时,可以减小(默认1s)自动刷新时间。

    curl -XPOST http://127.0.0.1:9300/logstash-2016.12.19/_settings -d '{"refresh_interval":"10s"}'

    如需关闭

    curl -XPOST http://127.0.0.1:9300/logstash-2016.12.19/_settings -d '{"refresh_interval":"-1"}'

    translog保证索引的一致性。elastic中的update,insert等写操作完成,一定会触发translog到磁盘上,然后再返回200。这个过程会损失一点性能。

    如果不考虑这些,希望性能优先,可以在index template中设置 index.translog.durability:async

    lucene的思路就是开新文件。默认1s就有一个文件产生。ES会不断在后台merge segment。 

    并不是所有大小的segment都会被merge,考虑性能的问题,大于5G的segment不会被merge。一般采用的策略是负载较低的时候通过forcemerge接口归并。

    curl -XPOST http://127.0.0.1:9300/logstash-2016.12.19/_forcemerge?max_num_segments=1

    _forcemerge对资源消耗比一般的多。

    route和replica的过程:

    每条数据都有一个routing值,默认是_id。

    shard = hash(routing)% number_of_primary_shards

    这个运算决定了数据被分配到的分片。一般分片数不能随意改,不然会导致路由不对。

    5节点集群。副本1个,索引主分片10。每个节点分配4个分片。但配置的时候要多一点,因为机器可能出故障。

    elasticsearch crud:

    create: curl -XPOST http://127.0.0.1:9200/logstash-2015.06.10/testlog -d '{name:"test", age:11}' 返回值会带_id假设为_id1

    read: curl -XGET http://127.0.0.1:9200/logstash-2015.06.10/testlog/_id1

    delete: curl -XDELETE http://127.0.0.1:9200/logstash-2015.06.10/testlog/_id1 支持通配符

    update: curl -XPOST http://127.0.0.1:9200/logstash-2015.06.10/testlog/_id1 -d  '{name:"test", age:11}'

    或者 curl -XPOST http://127.0.0.1:9200/logstash-2015.06.10/testlog/_id1/_update -d  '{doc: { "name": "test1"} }'

    或者 curl -XPOST http://127.0.0.1:9200/logstash-2015.06.10/testlog/_id1/_update -d  '{script: "ctx._source.name = "test1"" }'

    search:

    curl -XGET http://127.0.0.1:9200/logstash-2015.06.10/testlog/_search?q=name:"test"

    NOT AND OR组合搜索 必须大写

    比如user:("test1" OR "test2") AND NOT mesg:first;

    _exits_要求存在 _missing_:user 要求不存在

    聚合:1.0之前叫做facet,1.0之后叫做aggregation

  • 相关阅读:
    Coding styles, code review
    Some links haven't take a look(C++, JS, IE9)
    前端学习,找到一下一些问题的答案
    Browser judgement
    Theme of Google
    Browser Time Line
    迷茫在10点左右……
    WebPageTest 检测web站点性能网站测试工具
    Invoke IFrame/window in cross domain in IE&FF notes
    [解决]多线程中出现由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达
  • 原文地址:https://www.cnblogs.com/guochunyi/p/6202003.html
Copyright © 2020-2023  润新知