Elastichsearch实践

官网文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html

 

es中的索引、类型、文档可以一一和关系型数据库中的概念去对应。

 

在本地部署三个es程序,将会自动水平扩容。任何一个节点挂掉,在其他节点都有备份数据保证分片数据的完整性。

 

主分片的数目在索引创建时就已经确定了下来。一般我们给一个索引分配5个主分片,一个副本。但当你拥有越多的副本分片时,也将拥有越高的吞吐量(前提是增加机器)。

 

REST设置命令

/index/_settings // 如果对所有索引,用 /_all/_settings
{"number_of_replicas":1}    // 副本数
{"refresh_interval": "10s"}    // 刷新时间

 

网页加载性能上报,es近实时搜索优化实践:(反复调研测试了一个礼拜才得出的精辟结论)

node接收端缓存800条数据,统一bulk到es;

es全局设置{ refresh_interval: 10s },提升内存刷新时间。

 

聚合

按pageId做聚合(注意在terms里面设置size!—— 被坑惨过)

aggs: {
  mypageId: {
    terms: {
      size: 1000,
      field: 'pageId.keyword'
    }
  }
}
{
  "size": 0,
  "aggs": {
    "pageIds": {
      "terms": {
        "size": 100,
        "field": "pageId.keyword"
      }
    }
  }
}

 

查询指纹用户匹配

http://10.10.19.29:9200/

finger-query-2019.03.17/_search

{"size":1,"aggs":{"users":{"terms":{"size":100,"field":"matched"}}}}

 

查询页面聚合

{
  "size": 100,
  "aggs": {
    "pages": {
      "terms": {
        "size": 100,
        "field": "pageId"
      }
    }
  }
}

 

精确查询

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "pageId": "planting_v2_2_1"
        }
      }
    }
  }
}

 

去重

{
  "query": {
    "match_all": {}
  },
  "collapse": {
    "field": "pageId.keyword"
  }
}

 

按类型统计个数

{
  "size": 0,
  "aggs": {
    "group_by_RESOURCE_FORMAT": {
      "terms": {
        "field": "iswebp.keyword"
      }
    }
  }
}

 

posted @ 2018-11-21 21:13  暖风叔叔  阅读(758)  评论(0编辑  收藏  举报