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" } } } }