不为失败找理由,要为成功找方法。

社区日报 第465期 (2018-12-01)

  1. 适用于ES 6.0之后的Field Stats插件。 http://t.cn/ELmZMFl 

  2. 你知道ICU分析器支持emoji表情了吗?。 http://t.cn/ELmw4aF 

  3. Canvas中数据表和调试元素的使用示例。 http://t.cn/ELmX7Tc 
继续阅读 »
  1. 适用于ES 6.0之后的Field Stats插件。 http://t.cn/ELmZMFl 

  2. 你知道ICU分析器支持emoji表情了吗?。 http://t.cn/ELmw4aF 

  3. Canvas中数据表和调试元素的使用示例。 http://t.cn/ELmX7Tc 
收起阅读 »

Day 1 - ELK 使用小技巧(第 3 期)

ELK Tips 主要介绍一些 ELK 使用过程中的小技巧,内容主要来源为 Elastic 中文社区。

一、Logstash

1、Filebeat 设置多个 output

在 6.0 之前,Filebeat 可以设置多个输出(必须是不同类型的输出);从 6.0 开始已经禁止多输出了,只能拥有一个输出,如果想实现多输出,可以借助 logstash 等中间组件进行输出分发。

二、Elasticsearch

1、ES 用户占用的内存大于为 ES 设置的 heapsize

ES 是 Java 应用,底层存储引擎是基于 Lucene 的,heapsize 设置的是 Java 应用的内存;而 Lucene 建立倒排索引(Inverted Index)是先在内存里生成,然后定期以段文件(segment file)的形式刷到磁盘的,因此 Lucene 也会占用一部分内存。

https://elasticsearch.cn/article/32

2、ES 使用别名插入数据

ES 可以通过索引的方式向索引插入数据,但是同时只能有一个索引可以被写入,而且需要手动设置,未设置的情况下会报错:no write index is defined for alias [xxxx], The write index may be explicitly disabled using is_write_index=false or the alias points to multiple indices without one being designated as a write index。

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "is_write_index" : true
            }
        }
    ]
}

3、ES 设置 G1 垃圾回收

修改 jvm.options文件,将下面几行:

-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

改为

-XX:+UseG1GC
-XX:MaxGCPauseMillis=50

即可。

其中 -XX:MaxGCPauseMillis 是控制预期的最高 GC 时长,默认值为 200ms,如果线上业务特性对于 GC 停顿非常敏感,可以适当设置低一些。但是这个值如果设置过小,可能会带来比较高的 cpu 消耗。

4、ES 和 Zipkin 集成时设置验证信息

java -DKAFKA_ZOOKEEPER=10.14.123.117:2181 
-DSTORAGE_TYPE=elasticsearch 
-DES_HOSTS=http://10.14.125.5:9200 
ES_USERNAME=xxx ES_PASSWORD=xxx 
-jar zipkin.jar

5、ES 集群部署报错

问题 1 报错信息如下:

Received message from unsupported version:[2.0.0] minimal compatible version is:[5.6.0]

经排查是集群中存在低版本的 ES 实例,将低版本实例移除即可。

问题 2 报错信息如下:

with the same id but is a different node instance

删除对应节点 elsticsearch 文件夹下的 data 文件夹下的节点数据即可。

6、海量中文分词插件

海量分词是天津海量信息技术股份有限公司自主研发的中文分词核心,经测试分词效果还是不错的,值得一试。

https://github.com/HylandaOpen/elasticsearch-analysis-hlseg

7、查询一个索引下的所有 type 名

通过下面的 API,即可获取全部的 type,下面的例子中 doc 就是 indexName 索引下的一个 type:

GET http://es127.0.0.1:9200/indexName/_mappings
-----------------------------------------------
{
    indexName: - {
        mappings: - {
            doc: - {
                _all: + {... },
                dynamic_date_formats: + [... ],
                dynamic_templates: + [... ],
                properties: + {... }
            }
        }
    }
}

8、索引模板中根据字段值设置别名

设置索引模板的时候,别名可以使用 Query 条件来进行匹配。

PUT _template/template_1
{
    "index_patterns" : ["te*"],
    "settings" : {
        "number_of_shards" : 1
    },
    "aliases" : {
        "alias2" : {
            "filter" : {
                "term" : {"user" : "kimchy" }
            },
            "routing" : "kimchy"
        },
        "{index}-alias" : {} 
    }
}

9、索引模板设置默认时间匹配格式

ES 默认是不会将 yyyy-MM-dd HH:mm:ss 识别为时间的,可以通过在索引模板进行如下设置实现多种时间格式的识别:

"mappings": {
"doc": {
  "dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss||strict_date_optional_time||epoch_millis"],

10、ES 中 Merge 相关设置

Merge 是非常耗费 CPU 的操作;而且如果不是 SSD 的话,推荐将 index.merge.scheduler.max_thread_count 设置为 1;否则 ES 会启动 Math.min(3, Runtime.getRuntime().availableProcessors() / 2) 个线程进行 Merge 操作;这样大部分机械硬盘的磁盘 IO 都很难承受,就可能出现阻塞。

"index": {
  "refresh_interval": "5s",
  "number_of_shards": "3",
  "max_result_window": 10000,
  "translog": {
    "flush_threshold_size": "500mb",
    "sync_interval": "30s",
    "durability": "async"
  },
  "merge": {
    "scheduler": {
      "max_merge_count": "100",
      "max_thread_count": "1"
    }
  },

11、mapping 中 enabled store index 参数

  • enabled:默认是true,只用于 mapping 中的 object 字段类型;当设置为 false 时,其作用是使 es 不去解析该字段,并且该字段不能被查询和 store,只有在 source 中才能看到,设置 enabled 为 false,可以不设置字段类型,默认类型为 object;
  • store:默认 false,store 参数的功能和 source 有一些相似,我们的数据默认都会在 source 中存在,但我们也可以将数据 store 起来;当我们使用 copy_to 参数时,copy_to 的目标字段并不会在 source 中存储,此时 store 就派上用场了;
  • index:默认是 true,当设置为 false,表明该字段不能被查询,如果查询会报错。

12、ES 图片搜索

13、Term 聚合根据子聚合结果排序

GET /_search
{
    "aggs" : {
        "genres" : {
            "terms" : {
                "field" : "genre",
                "order" : { "playback_stats.max" : "desc" }
            },
            "aggs" : {
                "playback_stats" : { "stats" : { "field" : "play_count" } }
            }
        }
    }
}

三、社区文章精选

继续阅读 »

ELK Tips 主要介绍一些 ELK 使用过程中的小技巧,内容主要来源为 Elastic 中文社区。

一、Logstash

1、Filebeat 设置多个 output

在 6.0 之前,Filebeat 可以设置多个输出(必须是不同类型的输出);从 6.0 开始已经禁止多输出了,只能拥有一个输出,如果想实现多输出,可以借助 logstash 等中间组件进行输出分发。

二、Elasticsearch

1、ES 用户占用的内存大于为 ES 设置的 heapsize

ES 是 Java 应用,底层存储引擎是基于 Lucene 的,heapsize 设置的是 Java 应用的内存;而 Lucene 建立倒排索引(Inverted Index)是先在内存里生成,然后定期以段文件(segment file)的形式刷到磁盘的,因此 Lucene 也会占用一部分内存。

https://elasticsearch.cn/article/32

2、ES 使用别名插入数据

ES 可以通过索引的方式向索引插入数据,但是同时只能有一个索引可以被写入,而且需要手动设置,未设置的情况下会报错:no write index is defined for alias [xxxx], The write index may be explicitly disabled using is_write_index=false or the alias points to multiple indices without one being designated as a write index。

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "is_write_index" : true
            }
        }
    ]
}

3、ES 设置 G1 垃圾回收

修改 jvm.options文件,将下面几行:

-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

改为

-XX:+UseG1GC
-XX:MaxGCPauseMillis=50

即可。

其中 -XX:MaxGCPauseMillis 是控制预期的最高 GC 时长,默认值为 200ms,如果线上业务特性对于 GC 停顿非常敏感,可以适当设置低一些。但是这个值如果设置过小,可能会带来比较高的 cpu 消耗。

4、ES 和 Zipkin 集成时设置验证信息

java -DKAFKA_ZOOKEEPER=10.14.123.117:2181 
-DSTORAGE_TYPE=elasticsearch 
-DES_HOSTS=http://10.14.125.5:9200 
ES_USERNAME=xxx ES_PASSWORD=xxx 
-jar zipkin.jar

5、ES 集群部署报错

问题 1 报错信息如下:

Received message from unsupported version:[2.0.0] minimal compatible version is:[5.6.0]

经排查是集群中存在低版本的 ES 实例,将低版本实例移除即可。

问题 2 报错信息如下:

with the same id but is a different node instance

删除对应节点 elsticsearch 文件夹下的 data 文件夹下的节点数据即可。

6、海量中文分词插件

海量分词是天津海量信息技术股份有限公司自主研发的中文分词核心,经测试分词效果还是不错的,值得一试。

https://github.com/HylandaOpen/elasticsearch-analysis-hlseg

7、查询一个索引下的所有 type 名

通过下面的 API,即可获取全部的 type,下面的例子中 doc 就是 indexName 索引下的一个 type:

GET http://es127.0.0.1:9200/indexName/_mappings
-----------------------------------------------
{
    indexName: - {
        mappings: - {
            doc: - {
                _all: + {... },
                dynamic_date_formats: + [... ],
                dynamic_templates: + [... ],
                properties: + {... }
            }
        }
    }
}

8、索引模板中根据字段值设置别名

设置索引模板的时候,别名可以使用 Query 条件来进行匹配。

PUT _template/template_1
{
    "index_patterns" : ["te*"],
    "settings" : {
        "number_of_shards" : 1
    },
    "aliases" : {
        "alias2" : {
            "filter" : {
                "term" : {"user" : "kimchy" }
            },
            "routing" : "kimchy"
        },
        "{index}-alias" : {} 
    }
}

9、索引模板设置默认时间匹配格式

ES 默认是不会将 yyyy-MM-dd HH:mm:ss 识别为时间的,可以通过在索引模板进行如下设置实现多种时间格式的识别:

"mappings": {
"doc": {
  "dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss||strict_date_optional_time||epoch_millis"],

10、ES 中 Merge 相关设置

Merge 是非常耗费 CPU 的操作;而且如果不是 SSD 的话,推荐将 index.merge.scheduler.max_thread_count 设置为 1;否则 ES 会启动 Math.min(3, Runtime.getRuntime().availableProcessors() / 2) 个线程进行 Merge 操作;这样大部分机械硬盘的磁盘 IO 都很难承受,就可能出现阻塞。

"index": {
  "refresh_interval": "5s",
  "number_of_shards": "3",
  "max_result_window": 10000,
  "translog": {
    "flush_threshold_size": "500mb",
    "sync_interval": "30s",
    "durability": "async"
  },
  "merge": {
    "scheduler": {
      "max_merge_count": "100",
      "max_thread_count": "1"
    }
  },

11、mapping 中 enabled store index 参数

  • enabled:默认是true,只用于 mapping 中的 object 字段类型;当设置为 false 时,其作用是使 es 不去解析该字段,并且该字段不能被查询和 store,只有在 source 中才能看到,设置 enabled 为 false,可以不设置字段类型,默认类型为 object;
  • store:默认 false,store 参数的功能和 source 有一些相似,我们的数据默认都会在 source 中存在,但我们也可以将数据 store 起来;当我们使用 copy_to 参数时,copy_to 的目标字段并不会在 source 中存储,此时 store 就派上用场了;
  • index:默认是 true,当设置为 false,表明该字段不能被查询,如果查询会报错。

12、ES 图片搜索

13、Term 聚合根据子聚合结果排序

GET /_search
{
    "aggs" : {
        "genres" : {
            "terms" : {
                "field" : "genre",
                "order" : { "playback_stats.max" : "desc" }
            },
            "aggs" : {
                "playback_stats" : { "stats" : { "field" : "play_count" } }
            }
        }
    }
}

三、社区文章精选

收起阅读 »

社区日报 第464期 (2018-11-30)

1、python实现MongoDB数据同步到ES
http://t.cn/ELYKOXo
2、Elasticsearch搜索引擎性能调优实践
http://t.cn/ELRuqLN
3、全文检索ElasticSearch与Spring boot集成实例
http://t.cn/ELRuKal

编辑:铭毅天下
归档:https://elasticsearch.cn/article/6162
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1、python实现MongoDB数据同步到ES
http://t.cn/ELYKOXo
2、Elasticsearch搜索引擎性能调优实践
http://t.cn/ELRuqLN
3、全文检索ElasticSearch与Spring boot集成实例
http://t.cn/ELRuKal

编辑:铭毅天下
归档:https://elasticsearch.cn/article/6162
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »

社区日报 第463期 (2018-11-29)

1.使用Canvas和Elasticsearch监控机场安全运营
http://t.cn/ELp5dHT
2.Lucene 内核解析之Point索引
http://t.cn/ELptLV7
3.部署安全插件searchguard
http://t.cn/ELptMbj

编辑:金桥
归档:https://elasticsearch.cn/article/6161
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.使用Canvas和Elasticsearch监控机场安全运营
http://t.cn/ELp5dHT
2.Lucene 内核解析之Point索引
http://t.cn/ELptLV7
3.部署安全插件searchguard
http://t.cn/ELptMbj

编辑:金桥
归档:https://elasticsearch.cn/article/6161
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第462期 (2018-11-28)

Elastic日报 第462期 (2018-11-28)

1. 让天下没有难用的搜索 阿里搜索如何成长为贴心“暖男”
http://t.cn/E2UjZ6d
2.Elasticsearcharch索引生命周期管理探索
http://t.cn/RDUxF3t
3. 实例展示Elasticsearch集群生态,分片以及水平扩展
http://t.cn/RzIQzrR

编辑:江水
归档:http://elasticsearch.cn/article/6160
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
Elastic日报 第462期 (2018-11-28)

1. 让天下没有难用的搜索 阿里搜索如何成长为贴心“暖男”
http://t.cn/E2UjZ6d
2.Elasticsearcharch索引生命周期管理探索
http://t.cn/RDUxF3t
3. 实例展示Elasticsearch集群生态,分片以及水平扩展
http://t.cn/RzIQzrR

编辑:江水
归档:http://elasticsearch.cn/article/6160
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

关于es映射mapping中的enabled,store,index参数的理解

    因为刚才的一个问题,去看了一下es的文档中关于mapping参数的部分,发现了几个比较有意思的参数,index,store和enabled。下面简要说一下这几个参数的作用,有理解错和不足的地方希望大家指正。
enabled参数:
    默认是true。只用于mapping中的object字段类型。当设置为false时,其作用是使es不去解析该字段,并且该字段不能被查询和store,只有在_source中才能看到(即查询结果中会显示的_source数据)。设置enabled为false,可以不设置字段类型,默认为object
index参数:
    默认是true。当设置为false,表明该字段不能被查询,如果查询会报错。但是可以被store。当该文档被查出来时,在_source中也会显示出该字段。
store参数:
    默认false。store参数的功能和_source有一些相似。我们的数据默认都会在_source中存在。但我们也可以将数据store起来,不过大部分时候这个功能都很鸡肋。不过有一个例外,当我们使用copy_to参数时,copy_to的目标字段并不会在_source中存储,此时store就派上用场了。
三者能否同时存在:
    首先设置了enabled为false就不能设置store为true了,这两者冲突。而index和store是不冲突的。最后index和enabled之间的问题:enabled需要字段类型为object,而当字段类型为object时,好像不能设置index参数,试了几次都会报错。
PUT mindex/
{
"mappings": {
"type": {
"properties": {
"name": {
"type": "text",
"copy_to": "name_title",
"store": true,
"index": false
},
"title": {
"type": "text",
"copy_to": "name_title"
},
"name_title": {
"type": "text",
"store": true
},
"notenabled": {
"type": "object",
"enabled": false
}
}
}
}
}
PUT mindex/type/1
{
"name":"zz",
"title":"zxx",
"notenabled":"baby"
}
在搜索中使用了stored_fields之后,_source不会自己出现了,要手动指定字段。stored_fields里面不能出现notenabled。
GET /mindex/_search
{
"query": {
"match": {
"title": "zxx"
}
},
"stored_fields": ["name_title","title","name"],
"_source": ["name_title","title","name","notenabled"]
}
结果
"_source": {
"name": "zz",
"title": "zxx",
"notenabled": "baby"
},
"fields": {
"name": [
"zz"
],
"name_title": [
"zz",
"zxx"
]
}
看到结果,与上面的分析吻合。
继续阅读 »
    因为刚才的一个问题,去看了一下es的文档中关于mapping参数的部分,发现了几个比较有意思的参数,index,store和enabled。下面简要说一下这几个参数的作用,有理解错和不足的地方希望大家指正。
enabled参数:
    默认是true。只用于mapping中的object字段类型。当设置为false时,其作用是使es不去解析该字段,并且该字段不能被查询和store,只有在_source中才能看到(即查询结果中会显示的_source数据)。设置enabled为false,可以不设置字段类型,默认为object
index参数:
    默认是true。当设置为false,表明该字段不能被查询,如果查询会报错。但是可以被store。当该文档被查出来时,在_source中也会显示出该字段。
store参数:
    默认false。store参数的功能和_source有一些相似。我们的数据默认都会在_source中存在。但我们也可以将数据store起来,不过大部分时候这个功能都很鸡肋。不过有一个例外,当我们使用copy_to参数时,copy_to的目标字段并不会在_source中存储,此时store就派上用场了。
三者能否同时存在:
    首先设置了enabled为false就不能设置store为true了,这两者冲突。而index和store是不冲突的。最后index和enabled之间的问题:enabled需要字段类型为object,而当字段类型为object时,好像不能设置index参数,试了几次都会报错。
PUT mindex/
{
"mappings": {
"type": {
"properties": {
"name": {
"type": "text",
"copy_to": "name_title",
"store": true,
"index": false
},
"title": {
"type": "text",
"copy_to": "name_title"
},
"name_title": {
"type": "text",
"store": true
},
"notenabled": {
"type": "object",
"enabled": false
}
}
}
}
}
PUT mindex/type/1
{
"name":"zz",
"title":"zxx",
"notenabled":"baby"
}
在搜索中使用了stored_fields之后,_source不会自己出现了,要手动指定字段。stored_fields里面不能出现notenabled。
GET /mindex/_search
{
"query": {
"match": {
"title": "zxx"
}
},
"stored_fields": ["name_title","title","name"],
"_source": ["name_title","title","name","notenabled"]
}
结果
"_source": {
"name": "zz",
"title": "zxx",
"notenabled": "baby"
},
"fields": {
"name": [
"zz"
],
"name_title": [
"zz",
"zxx"
]
}
看到结果,与上面的分析吻合。 收起阅读 »

社区日报 第461期 (2018-11-27)

1. 浅谈搜索系统
http://t.cn/Ri9e4Ss
2. 多个ES集群一致性问题
http://t.cn/RIwrbul
3. 使用elasticsearch与jieba分词搭建搜索服务
http://t.cn/ELXEWPv

编辑:wt
归档:https://elasticsearch.cn/article/6158
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1. 浅谈搜索系统
http://t.cn/Ri9e4Ss
2. 多个ES集群一致性问题
http://t.cn/RIwrbul
3. 使用elasticsearch与jieba分词搭建搜索服务
http://t.cn/ELXEWPv

编辑:wt
归档:https://elasticsearch.cn/article/6158
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第460期 (2018-11-26)

1.了解和es同类型的分布式系统TIDB如何做分布式调度
http://t.cn/RTKEZ0U

2.ElasticSearch集群故障案例分析: 警惕通配符查询
https://elasticsearch.cn/article/171

3.分析elk中kibana查询数据返回为空
http://t.cn/ELbN7ti

编辑:cyberdak
归档:https://elasticsearch.cn/article/6157
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.了解和es同类型的分布式系统TIDB如何做分布式调度
http://t.cn/RTKEZ0U

2.ElasticSearch集群故障案例分析: 警惕通配符查询
https://elasticsearch.cn/article/171

3.分析elk中kibana查询数据返回为空
http://t.cn/ELbN7ti

编辑:cyberdak
归档:https://elasticsearch.cn/article/6157
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

访谈:Elastic Stack v6.5 新特性解读

podcast-advertising-banner.jpg

欢迎来到 Elastic 社区电台的第八期节目,我们本期节目的嘉宾是来自于Elastic 在中国的首席架构师吴斌, Elastic 在本月11月14日发布了一个全新的版本 6.5,放出了一系列精彩的特性,本次节目我们就这些最近发布的新特性做一个简单的解读。

收听地址

https://www.ximalaya.com/keji/14965410/139462151

嘉宾

吴斌,十年 IT 行业经验,经历了软件工程师到架构师的全方位磨练。专注于海量数据处理、挖掘、分析和企业级搜索等领域。 现任 Elastic 架构师,负责公司亚太地区事务。致力于应用 Elastic 的先进技术产品解决企业数据应用问题。

主持人

Elastic 技术布道师,曾勇(Medcl)。

关于 Elastic 社区电台

Elastic 开源社区举办的一款播客类节目, 邀请来自开源社区的用户,一起聊聊 Elastic 开源产品的使用案例、经验分享、架构变迁等等。

继续阅读 »

podcast-advertising-banner.jpg

欢迎来到 Elastic 社区电台的第八期节目,我们本期节目的嘉宾是来自于Elastic 在中国的首席架构师吴斌, Elastic 在本月11月14日发布了一个全新的版本 6.5,放出了一系列精彩的特性,本次节目我们就这些最近发布的新特性做一个简单的解读。

收听地址

https://www.ximalaya.com/keji/14965410/139462151

嘉宾

吴斌,十年 IT 行业经验,经历了软件工程师到架构师的全方位磨练。专注于海量数据处理、挖掘、分析和企业级搜索等领域。 现任 Elastic 架构师,负责公司亚太地区事务。致力于应用 Elastic 的先进技术产品解决企业数据应用问题。

主持人

Elastic 技术布道师,曾勇(Medcl)。

关于 Elastic 社区电台

Elastic 开源社区举办的一款播客类节目, 邀请来自开源社区的用户,一起聊聊 Elastic 开源产品的使用案例、经验分享、架构变迁等等。

收起阅读 »

社区日报 第459期 (2018-11-25)

1.ElasticSearch搜索语法及Boolean和聚合搜索。
http://t.cn/E20PxFB
2.ElasticSearch命令备忘单。
http://t.cn/ELzpeNp
3.(自备梯子)抵制谷歌让你成为机器人的企图。
http://t.cn/ELz8ybs

编辑:至尊宝
归档:https://elasticsearch.cn/article/6155
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.ElasticSearch搜索语法及Boolean和聚合搜索。
http://t.cn/E20PxFB
2.ElasticSearch命令备忘单。
http://t.cn/ELzpeNp
3.(自备梯子)抵制谷歌让你成为机器人的企图。
http://t.cn/ELz8ybs

编辑:至尊宝
归档:https://elasticsearch.cn/article/6155
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第458期 (2018-11-24)

  1. ES结合深度学习提升查找相似文档的效率。 http://t.cn/ELhMvpM

  2. Elasticsearch在物流数据中心的应用。 http://t.cn/E2ky75a

  3. 国产好片推荐:《无名之辈》。 http://t.cn/E2zSj92
继续阅读 »
  1. ES结合深度学习提升查找相似文档的效率。 http://t.cn/ELhMvpM

  2. Elasticsearch在物流数据中心的应用。 http://t.cn/E2ky75a

  3. 国产好片推荐:《无名之辈》。 http://t.cn/E2zSj92
收起阅读 »

社区日报 第457期 (2018-11-23)

1、批量加载json/csv等数据到ElasticSearch工具推荐
http://t.cn/E23BXY3
2、Elasticsearch和Hive集成实战
http://t.cn/RToSes4
3、浅谈Elasticsearch基础与架构
http://t.cn/EwklpZS

编辑:铭毅天下
归档:https://elasticsearch.cn/article/6153
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1、批量加载json/csv等数据到ElasticSearch工具推荐
http://t.cn/E23BXY3
2、Elasticsearch和Hive集成实战
http://t.cn/RToSes4
3、浅谈Elasticsearch基础与架构
http://t.cn/EwklpZS

编辑:铭毅天下
归档:https://elasticsearch.cn/article/6153
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

CentOS 7.4 下安装 ES 6.5.1 搜索集群

一、准备安装

1、修改系统 hosts

vi /etc/hosts   # 修改 hosts 文件,添加下面的内容

192.168.11.1    sky-00
192.168.11.2    sky-01
192.168.11.3    sky-02
192.168.11.4    sky-03
192.168.11.5    sky-04
192.168.11.6    sky-05
192.168.11.7    sky-06

2、角色分配

主机名 角色 内存分配
sky-00 Master 4G
sky-01 Master 8G
sky-02 Master+Data 12G
sky-03 Data 12G
sky-04 Data 12G
sky-05 Data 12G
sky-06 Data 12G

3、创建 ES 用户

adduser elastic  # 新增用户
passwd elastic   # 修改用户密码

4、创建 ES 数据和日志目录

cd /data/
mkdir elastic
cd elastic
mkdir data      # 创建数据目录
mkdir log       # 创建日志目录
chown -R elastic /data/elastic/  # 修改拥有着

5、调整文件句柄数以及可用进程数

Elasticsearch 要求其可用的文件句柄至少为 65536,同时要求其进程数限制至少为 2048,可用按照下面的指令进行修改。

分别对应以下两个报错信息:

  • max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
  • max number of threads [1024] for user [es] is too low, increase to at least [2048]
vi /etc/security/limits.conf

*     soft   nofile  100001
*     hard   nofile  100002
*     soft   nproc   4096
*     hard   nproc   8192
elastic soft memlock unlimited
elastic hard memlock unlimited

6、设置内核交换

为了避免不必要的磁盘和内存交换,影响效率,需要将 vm.swappiness 修改为 1(进行最少量的交换,而不禁用交换)或者 10(当系统存在足够内存时,推荐设置为该值以提高性能),其默认值为 60。

此外需要修改最大虚拟内存 vm.max_map_count 防止启动时报错:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

vi /etc/sysctl.conf

vm.swappiness = 1
vm.max_map_count = 262144

7、下载安装文件

mkdir /opt/downloads/
mkdir /opt/soft/
cd /opt/downloads/

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-linux-x86_64.tar.gz
wget http://download.oracle.com/otn/java/jdk/xxxxxx/jdk-8u191-linux-x64.tar.gz

tar -zxvf elasticsearch-6.5.1.tar.gz -C /opt/soft/
tar -zxvf jdk-8u191-linux-x64.tar.gz -C /opt/soft/
tar -zxvf kibana-6.5.1-linux-x86_64.tar.gz -C /opt/soft/

chown -R elastic /opt/soft/elasticsearch-6.5.1/
chown -R elastic /opt/soft/kibana-6.5.1/

二、开始安装

1、配置 Java 环境

su elastic             #切换到 elastic 用户
vi ~/.bashrc          #只修改 elastic 用户自己的环境变量

export JAVA_HOME=/opt/soft/jdk1.8.0_191
export JRE_HOME=/opt/soft/jdk1.8.0_191/jre
export CLASSPATH=.:/opt/soft/jdk1.8.0_191/lib:/opt/soft/jdk1.8.0_191/jre/lib
export PATH=$PATH:/opt/soft/jdk1.8.0_191/bin:/opt/soft/jdk1.8.0_191/jre/bin

2、配置 ES 内存占用

cd /opt/soft/elasticsearch-6.5.1/config/
vi jvm.options 

-Xms4g      # 请根据自己机器配置调整
-Xmx4g

3、配置 Elasticsearch

下面的配置已经过多个生产环境验证,具体设置值仅供参考,请务必根据实际情况进行调整。

# ---------------------------------- Cluster -----------------------------------
#
# 设置集群名
cluster.name: cluster-name
#
# ------------------------------------ Node ------------------------------------
#
# 设置节点名
node.name: node01

# 设置角色
node.master: true   
node.data: false
node.ingest: true

# 设置机架信息
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# 设置数据路径
path.data: /data/elastic/data

# 设置日志路径
path.logs: /data/elastic/log
#
# ----------------------------------- Memory -----------------------------------
#
# 设置内存锁定
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
#
# ---------------------------------- Network -----------------------------------
#
# 设置ip和端口
network.bind_host: sky-00
network.publish_host: 0.0.0.0
http.port: 9200

# 设置跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.max_content_length: 500mb

# --------------------------------- Discovery ----------------------------------

# 设置zen发现范围(只需要填写主节点的 ip 即可)
discovery.zen.ping.unicast.hosts: ["sky-00", "sky-01", "sky-02"]

discovery.zen.no_master_block: write
discovery.zen.fd.ping_timeout: 10s

# 设置最小主节点个数,一般为:(master_node_count+1)/2
discovery.zen.minimum_master_nodes: 2

# ---------------------------------- Gateway -----------------------------------
#
# 设置在有4个节点后进行数据恢复
gateway.recover_after_nodes: 4
gateway.expected_nodes: 7
gateway.recover_after_time: 1m
#
# ---------------------------------- Various -----------------------------------
# 禁止通配符模式删除索引
action.destructive_requires_name: true

indices.recovery.max_bytes_per_sec: 200mb
indices.memory.index_buffer_size: 20%

# 默认开启全部类型脚本,可以通过下面配置进行限制
#script.allowed_types: inline
#script.allowed_contexts: search, update

# 关闭xpack的安全校验
xpack.security.enabled: false

# 开启 monitoring
xpack.monitoring.enabled: true
xpack.monitoring.collection.enabled: true

# 设置 monitoring 写入信息
xpack.monitoring.exporters:
  sky:
    type: http
    host: ["sky-02", "sky-03", "sky-04", "sky-05", "sky-06"]
    # 设置 monitoring 索引格式,默认是 YYYY-MM-DD(按天新建)
    index.name.time_format: YYYY-MM
    headers:
      # 设置 Basic 认证信息(详见插件安装部分说明)
      Authorization: "Basic XXXXXXXXXXXXXXX"

三、安装插件

1、安装插件

推荐安装的插件有:

  • IK 中文分词插件
  • Readonlyrest 安全认证插件
  • elasticsearch-head 集群监控管理插件(chrome 插件)

插件下载链接: https://pan.baidu.com/s/1r_322unsIjoWlhY8u7pkBA 提取码: aupq

使用下面命令即可安装。

$ES_HOME/bin/elasticsearch-plugin -install file:///data/downloads/elasticsearch-analysis-ik-6.5.1.zip
$ES_HOME/bin/elasticsearch-plugin -install file:///data/downloads/readonlyrest-1.16.29_es6.5.1.zip

2、配置 Readonlyrest 安全认证

下面只简单介绍 Readonlyrest 的 Basic 认证,更高级的用法可以去官方网站查看,在 ES 安装目录的 conf 目录下新建文件 readonlyrest.yml,并添加下面内容。

readonlyrest:
    access_control_rules:
    - name: "Require HTTP Basic Auth"
      type: allow
      auth_key: 用户名:密码

3、启动 ES

全部安装完成后,即可使用 elastic 用户启动 ES。

# 默认 ES 不支持 root 用户启动
su elastic
cd /opt/soft/elasticsearch-6.5.1/bin
./elasticsearch -d

四、在 Kibana 里面监控

在安装 ES 的时候,我们配置了 ES 的监控信息,这样我们就可以在 Kibana 中查看 ES 索引信息、node 信息等。

1、配置 Kibana

进入 Kibana 的解压目录下的 conf 文件夹,打开配置文件 kibana.yml

# 配置 kibana ui 的端口
server.port: 5601

# 配置 kibana 访问 ip
server.host: "0.0.0.0"

# 设置 ES 地址
elasticsearch.url: "http://sky-00:9200"

# dashboards. Kibana creates a new index if the index doesn't already exist.
#kibana.index: ".kibana"

# 打开 kibana 时默认页面
#kibana.defaultAppId: "home"

# ES Basic 认证信息
elasticsearch.username: "用户名"
elasticsearch.password: "密码"

# 设置时区信息
#i18n.locale: "en"

# 开启监控
xpack.monitoring.enabled: true

# 关闭 kibana 监控,默认为 true
xpack.monitoring.kibana.collection.enabled: false

2、对 Kibana 配置文件的说明

  • ES Basic 认证信息配置(在启动时对 Kibana 索引进行维护)完成后,登陆 kibana 时,依旧需要输入认证信息;
  • 由于 kibana 的 monitoring 无法设置新建的索引的索引名(无法配置 index.name.time_format),这样 kibana 每天会新建一个索引,由于 kibana 只是作为管理查看工具,因此关闭了 kibana 监控;
  • elasticsearch.url 该配置项无法设置多个 es 地址;如果你想实现类似负载均衡的功能,最简单的方法就是在 Kibana 机器上运行一个协调(Coordinating)节点。

3、监控界面

全部配置完成后,启动 kibana,打开 monitoring 即可开始监控 node、index 等。

使用 Kibana 监控节点状态

五、设置索引模板

具体请参考之前发布的文章基于 IK 分词器的 ES 通用索引模板


Any Code,Code Any!

扫码关注『AnyCode』,编程路上,一起前行。

继续阅读 »

一、准备安装

1、修改系统 hosts

vi /etc/hosts   # 修改 hosts 文件,添加下面的内容

192.168.11.1    sky-00
192.168.11.2    sky-01
192.168.11.3    sky-02
192.168.11.4    sky-03
192.168.11.5    sky-04
192.168.11.6    sky-05
192.168.11.7    sky-06

2、角色分配

主机名 角色 内存分配
sky-00 Master 4G
sky-01 Master 8G
sky-02 Master+Data 12G
sky-03 Data 12G
sky-04 Data 12G
sky-05 Data 12G
sky-06 Data 12G

3、创建 ES 用户

adduser elastic  # 新增用户
passwd elastic   # 修改用户密码

4、创建 ES 数据和日志目录

cd /data/
mkdir elastic
cd elastic
mkdir data      # 创建数据目录
mkdir log       # 创建日志目录
chown -R elastic /data/elastic/  # 修改拥有着

5、调整文件句柄数以及可用进程数

Elasticsearch 要求其可用的文件句柄至少为 65536,同时要求其进程数限制至少为 2048,可用按照下面的指令进行修改。

分别对应以下两个报错信息:

  • max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
  • max number of threads [1024] for user [es] is too low, increase to at least [2048]
vi /etc/security/limits.conf

*     soft   nofile  100001
*     hard   nofile  100002
*     soft   nproc   4096
*     hard   nproc   8192
elastic soft memlock unlimited
elastic hard memlock unlimited

6、设置内核交换

为了避免不必要的磁盘和内存交换,影响效率,需要将 vm.swappiness 修改为 1(进行最少量的交换,而不禁用交换)或者 10(当系统存在足够内存时,推荐设置为该值以提高性能),其默认值为 60。

此外需要修改最大虚拟内存 vm.max_map_count 防止启动时报错:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

vi /etc/sysctl.conf

vm.swappiness = 1
vm.max_map_count = 262144

7、下载安装文件

mkdir /opt/downloads/
mkdir /opt/soft/
cd /opt/downloads/

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-linux-x86_64.tar.gz
wget http://download.oracle.com/otn/java/jdk/xxxxxx/jdk-8u191-linux-x64.tar.gz

tar -zxvf elasticsearch-6.5.1.tar.gz -C /opt/soft/
tar -zxvf jdk-8u191-linux-x64.tar.gz -C /opt/soft/
tar -zxvf kibana-6.5.1-linux-x86_64.tar.gz -C /opt/soft/

chown -R elastic /opt/soft/elasticsearch-6.5.1/
chown -R elastic /opt/soft/kibana-6.5.1/

二、开始安装

1、配置 Java 环境

su elastic             #切换到 elastic 用户
vi ~/.bashrc          #只修改 elastic 用户自己的环境变量

export JAVA_HOME=/opt/soft/jdk1.8.0_191
export JRE_HOME=/opt/soft/jdk1.8.0_191/jre
export CLASSPATH=.:/opt/soft/jdk1.8.0_191/lib:/opt/soft/jdk1.8.0_191/jre/lib
export PATH=$PATH:/opt/soft/jdk1.8.0_191/bin:/opt/soft/jdk1.8.0_191/jre/bin

2、配置 ES 内存占用

cd /opt/soft/elasticsearch-6.5.1/config/
vi jvm.options 

-Xms4g      # 请根据自己机器配置调整
-Xmx4g

3、配置 Elasticsearch

下面的配置已经过多个生产环境验证,具体设置值仅供参考,请务必根据实际情况进行调整。

# ---------------------------------- Cluster -----------------------------------
#
# 设置集群名
cluster.name: cluster-name
#
# ------------------------------------ Node ------------------------------------
#
# 设置节点名
node.name: node01

# 设置角色
node.master: true   
node.data: false
node.ingest: true

# 设置机架信息
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# 设置数据路径
path.data: /data/elastic/data

# 设置日志路径
path.logs: /data/elastic/log
#
# ----------------------------------- Memory -----------------------------------
#
# 设置内存锁定
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
#
# ---------------------------------- Network -----------------------------------
#
# 设置ip和端口
network.bind_host: sky-00
network.publish_host: 0.0.0.0
http.port: 9200

# 设置跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.max_content_length: 500mb

# --------------------------------- Discovery ----------------------------------

# 设置zen发现范围(只需要填写主节点的 ip 即可)
discovery.zen.ping.unicast.hosts: ["sky-00", "sky-01", "sky-02"]

discovery.zen.no_master_block: write
discovery.zen.fd.ping_timeout: 10s

# 设置最小主节点个数,一般为:(master_node_count+1)/2
discovery.zen.minimum_master_nodes: 2

# ---------------------------------- Gateway -----------------------------------
#
# 设置在有4个节点后进行数据恢复
gateway.recover_after_nodes: 4
gateway.expected_nodes: 7
gateway.recover_after_time: 1m
#
# ---------------------------------- Various -----------------------------------
# 禁止通配符模式删除索引
action.destructive_requires_name: true

indices.recovery.max_bytes_per_sec: 200mb
indices.memory.index_buffer_size: 20%

# 默认开启全部类型脚本,可以通过下面配置进行限制
#script.allowed_types: inline
#script.allowed_contexts: search, update

# 关闭xpack的安全校验
xpack.security.enabled: false

# 开启 monitoring
xpack.monitoring.enabled: true
xpack.monitoring.collection.enabled: true

# 设置 monitoring 写入信息
xpack.monitoring.exporters:
  sky:
    type: http
    host: ["sky-02", "sky-03", "sky-04", "sky-05", "sky-06"]
    # 设置 monitoring 索引格式,默认是 YYYY-MM-DD(按天新建)
    index.name.time_format: YYYY-MM
    headers:
      # 设置 Basic 认证信息(详见插件安装部分说明)
      Authorization: "Basic XXXXXXXXXXXXXXX"

三、安装插件

1、安装插件

推荐安装的插件有:

  • IK 中文分词插件
  • Readonlyrest 安全认证插件
  • elasticsearch-head 集群监控管理插件(chrome 插件)

插件下载链接: https://pan.baidu.com/s/1r_322unsIjoWlhY8u7pkBA 提取码: aupq

使用下面命令即可安装。

$ES_HOME/bin/elasticsearch-plugin -install file:///data/downloads/elasticsearch-analysis-ik-6.5.1.zip
$ES_HOME/bin/elasticsearch-plugin -install file:///data/downloads/readonlyrest-1.16.29_es6.5.1.zip

2、配置 Readonlyrest 安全认证

下面只简单介绍 Readonlyrest 的 Basic 认证,更高级的用法可以去官方网站查看,在 ES 安装目录的 conf 目录下新建文件 readonlyrest.yml,并添加下面内容。

readonlyrest:
    access_control_rules:
    - name: "Require HTTP Basic Auth"
      type: allow
      auth_key: 用户名:密码

3、启动 ES

全部安装完成后,即可使用 elastic 用户启动 ES。

# 默认 ES 不支持 root 用户启动
su elastic
cd /opt/soft/elasticsearch-6.5.1/bin
./elasticsearch -d

四、在 Kibana 里面监控

在安装 ES 的时候,我们配置了 ES 的监控信息,这样我们就可以在 Kibana 中查看 ES 索引信息、node 信息等。

1、配置 Kibana

进入 Kibana 的解压目录下的 conf 文件夹,打开配置文件 kibana.yml

# 配置 kibana ui 的端口
server.port: 5601

# 配置 kibana 访问 ip
server.host: "0.0.0.0"

# 设置 ES 地址
elasticsearch.url: "http://sky-00:9200"

# dashboards. Kibana creates a new index if the index doesn't already exist.
#kibana.index: ".kibana"

# 打开 kibana 时默认页面
#kibana.defaultAppId: "home"

# ES Basic 认证信息
elasticsearch.username: "用户名"
elasticsearch.password: "密码"

# 设置时区信息
#i18n.locale: "en"

# 开启监控
xpack.monitoring.enabled: true

# 关闭 kibana 监控,默认为 true
xpack.monitoring.kibana.collection.enabled: false

2、对 Kibana 配置文件的说明

  • ES Basic 认证信息配置(在启动时对 Kibana 索引进行维护)完成后,登陆 kibana 时,依旧需要输入认证信息;
  • 由于 kibana 的 monitoring 无法设置新建的索引的索引名(无法配置 index.name.time_format),这样 kibana 每天会新建一个索引,由于 kibana 只是作为管理查看工具,因此关闭了 kibana 监控;
  • elasticsearch.url 该配置项无法设置多个 es 地址;如果你想实现类似负载均衡的功能,最简单的方法就是在 Kibana 机器上运行一个协调(Coordinating)节点。

3、监控界面

全部配置完成后,启动 kibana,打开 monitoring 即可开始监控 node、index 等。

使用 Kibana 监控节点状态

五、设置索引模板

具体请参考之前发布的文章基于 IK 分词器的 ES 通用索引模板


Any Code,Code Any!

扫码关注『AnyCode』,编程路上,一起前行。

收起阅读 »

社区日报 第456期 (2018-11-22)

1.node框架接入ELK实践总结
http://t.cn/E21vqIJ
2.携程机票日志追踪系统架构演进
http://t.cn/EzisYHb
3.手写ElasticSearch分词器
http://t.cn/E21vLG3

编辑:金桥
归档:https://elasticsearch.cn/article/6151
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.node框架接入ELK实践总结
http://t.cn/E21vqIJ
2.携程机票日志追踪系统架构演进
http://t.cn/EzisYHb
3.手写ElasticSearch分词器
http://t.cn/E21vLG3

编辑:金桥
归档:https://elasticsearch.cn/article/6151
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第455期 (2018-11-21)

1. 海量数据搜索 搜索引擎
http://t.cn/E2HKuxt
2. Elasticsearch常见的5个错误及解决策略
http://t.cn/E2H9bKw
3. Elasticsearch 原理分析
http://t.cn/ReCN93k
 
编辑:江水
归档:https://elasticsearch.cn/article/6150
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1. 海量数据搜索 搜索引擎
http://t.cn/E2HKuxt
2. Elasticsearch常见的5个错误及解决策略
http://t.cn/E2H9bKw
3. Elasticsearch 原理分析
http://t.cn/ReCN93k
 
编辑:江水
归档:https://elasticsearch.cn/article/6150
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »