有关公司及团队的管理和运营
2月28
使用Easticsearc时侯启动时,点击elasticsearch.bat发生闪退。
原因:允许elasticsearch跨越访问时,在修改了elasticsearch的配置文件,并且以非UTF-8的格式修改的,结果就报错了。
添加跨域访问:
http.cors.enabled: true
http.cors.allow‐origin: "*"
日志:
java.lang.IllegalArgumentException:unknown setting [http.cors.allow‐origin] did you mean [http.cors.allow-origin]?
问题:查看日志文件可以看出allowe-origin中的符号没有识别。
解决:原因是在修改elasticsearch.yml时用的notepad++,默认的是ANSI 编码,重新修改配置文件,以UTF-8编码修改并保存。(注意:修改elasticsearch.yml最好只用utf-8编码)
elasticsearch:6.2.1
jdk:1.8.0.241 [ java -version]
我的elasticsearch.yml 配置 ,如下:
# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
# Before you set out to tweak and tune the configuration, make sure you
# understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
##配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
cluster.name: lxw-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
##节点名,通常一台物理服务器就是一个节点,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
node.name: lxw-node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
node.master: true #主节点
node.data: true #数据节点
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#索引目录
path.data: D:\softwore\elasticsearch-6.2.1\data
# Path to log files:
#日志
path.logs: D:\softwore\elasticsearch-6.2.1\logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
##绑定ip地址 我的问题是改的这里
#network.host: 0.0.0.0
network.host: 127.0.0.1
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#暴露的http端口
http.port: 9200
#内部端口
transport.tcp.port: 9300
# 跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
#设置集群中master节点的初始列表
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301", "0.0.0.0:9302"]
#主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。
discovery.zen.minimum_master_nodes: 1
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
报错如下:
D:\softwore\elasticsearch-6.2.1\bin>elasticsearch.bat
[2021-08-16T14:56:26,659][INFO ][o.e.n.Node ] [lxw-node-1] initializing ...
[2021-08-16T14:56:26,753][INFO ][o.e.e.NodeEnvironment ] [lxw-node-1] using [1] data paths, mounts [[(D:)]], net usable_space [380.2gb], net total_space [390.6gb], types [NTFS]
[2021-08-16T14:56:26,754][INFO ][o.e.e.NodeEnvironment ] [lxw-node-1] heap size [990.7mb], compressed ordinary object pointers [true]
[2021-08-16T14:56:26,756][INFO ][o.e.n.Node ] [lxw-node-1] node name [lxw-node-1], node ID [JdIIBJ5NRYSD52RuvkxTiQ]
[2021-08-16T14:56:26,756][INFO ][o.e.n.Node ] [lxw-node-1] version[6.2.1], pid[13648], build[7299dc3/2018-02-07T19:34:26.990113Z], OS[Windows 10/10.0/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_241/25.241-b07]
[2021-08-16T14:56:26,757][INFO ][o.e.n.Node ] [lxw-node-1] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=C:\Users\LEJU\AppData\Local\Temp\elasticsearch, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Delasticsearch, -Des.path.home=D:\softwore\elasticsearch-6.2.1, -Des.path.conf=D:\softwore\elasticsearch-6.2.1\config]
[2021-08-16T14:56:27,485][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [aggs-matrix-stats]
[2021-08-16T14:56:27,485][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [analysis-common]
[2021-08-16T14:56:27,493][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [ingest-common]
[2021-08-16T14:56:27,494][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [lang-expression]
[2021-08-16T14:56:27,494][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [lang-mustache]
[2021-08-16T14:56:27,496][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [lang-painless]
[2021-08-16T14:56:27,497][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [mapper-extras]
[2021-08-16T14:56:27,497][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [parent-join]
[2021-08-16T14:56:27,498][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [percolator]
[2021-08-16T14:56:27,498][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [rank-eval]
[2021-08-16T14:56:27,499][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [reindex]
[2021-08-16T14:56:27,499][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [repository-url]
[2021-08-16T14:56:27,500][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [transport-netty4]
[2021-08-16T14:56:27,500][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [tribe]
[2021-08-16T14:56:27,501][INFO ][o.e.p.PluginsService ] [lxw-node-1] no plugins loaded
[2021-08-16T14:56:28,679][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [lxw-node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [http.cors.allow‐origin] did you mean [http.cors.allow-origin]?
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.1.jar:6.2.1]
Caused by: java.lang.IllegalArgumentException: unknown setting [http.cors.allow鈥恛rigin] did you mean [http.cors.allow-origin]?
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:346) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:310) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:284) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:134) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.node.Node.<init>(Node.java:331) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.1.jar:6.2.1]
解决方法:
将原来的:注意版本问题,不同版本兼容性不一样
补充:解决Elasticsearch(Windows)闪退问题
进入Elasticsearch安装目录下的config目录,修改elasticsearch.yml文件.在文件的末尾加入以下代码
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: heck
node.name: master
network.host: 127.0.0.1
发现持续闪退。这时候我一开始只加入前两行的时候,发现可以正常运行。于是推理了一下,其实可以看日志,但是可能我比较懒,直接感觉加的ip绑定有问题,于是删除最后一行,重新保存启动,发现可以正常运行,好像是因为Elasticsearch是跨域的,具体可能是什么问题,没有细查
原因:允许elasticsearch跨越访问时,在修改了elasticsearch的配置文件,并且以非UTF-8的格式修改的,结果就报错了。
添加跨域访问:
http.cors.enabled: true
http.cors.allow‐origin: "*"
日志:
java.lang.IllegalArgumentException:unknown setting [http.cors.allow‐origin] did you mean [http.cors.allow-origin]?
问题:查看日志文件可以看出allowe-origin中的符号没有识别。
解决:原因是在修改elasticsearch.yml时用的notepad++,默认的是ANSI 编码,重新修改配置文件,以UTF-8编码修改并保存。(注意:修改elasticsearch.yml最好只用utf-8编码)
elasticsearch:6.2.1
jdk:1.8.0.241 [ java -version]
我的elasticsearch.yml 配置 ,如下:
# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
# Before you set out to tweak and tune the configuration, make sure you
# understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
##配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
cluster.name: lxw-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
##节点名,通常一台物理服务器就是一个节点,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
node.name: lxw-node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
node.master: true #主节点
node.data: true #数据节点
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#索引目录
path.data: D:\softwore\elasticsearch-6.2.1\data
# Path to log files:
#日志
path.logs: D:\softwore\elasticsearch-6.2.1\logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
##绑定ip地址 我的问题是改的这里
#network.host: 0.0.0.0
network.host: 127.0.0.1
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#暴露的http端口
http.port: 9200
#内部端口
transport.tcp.port: 9300
# 跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
#设置集群中master节点的初始列表
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301", "0.0.0.0:9302"]
#主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。
discovery.zen.minimum_master_nodes: 1
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
报错如下:
D:\softwore\elasticsearch-6.2.1\bin>elasticsearch.bat
[2021-08-16T14:56:26,659][INFO ][o.e.n.Node ] [lxw-node-1] initializing ...
[2021-08-16T14:56:26,753][INFO ][o.e.e.NodeEnvironment ] [lxw-node-1] using [1] data paths, mounts [[(D:)]], net usable_space [380.2gb], net total_space [390.6gb], types [NTFS]
[2021-08-16T14:56:26,754][INFO ][o.e.e.NodeEnvironment ] [lxw-node-1] heap size [990.7mb], compressed ordinary object pointers [true]
[2021-08-16T14:56:26,756][INFO ][o.e.n.Node ] [lxw-node-1] node name [lxw-node-1], node ID [JdIIBJ5NRYSD52RuvkxTiQ]
[2021-08-16T14:56:26,756][INFO ][o.e.n.Node ] [lxw-node-1] version[6.2.1], pid[13648], build[7299dc3/2018-02-07T19:34:26.990113Z], OS[Windows 10/10.0/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_241/25.241-b07]
[2021-08-16T14:56:26,757][INFO ][o.e.n.Node ] [lxw-node-1] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=C:\Users\LEJU\AppData\Local\Temp\elasticsearch, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Delasticsearch, -Des.path.home=D:\softwore\elasticsearch-6.2.1, -Des.path.conf=D:\softwore\elasticsearch-6.2.1\config]
[2021-08-16T14:56:27,485][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [aggs-matrix-stats]
[2021-08-16T14:56:27,485][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [analysis-common]
[2021-08-16T14:56:27,493][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [ingest-common]
[2021-08-16T14:56:27,494][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [lang-expression]
[2021-08-16T14:56:27,494][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [lang-mustache]
[2021-08-16T14:56:27,496][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [lang-painless]
[2021-08-16T14:56:27,497][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [mapper-extras]
[2021-08-16T14:56:27,497][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [parent-join]
[2021-08-16T14:56:27,498][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [percolator]
[2021-08-16T14:56:27,498][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [rank-eval]
[2021-08-16T14:56:27,499][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [reindex]
[2021-08-16T14:56:27,499][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [repository-url]
[2021-08-16T14:56:27,500][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [transport-netty4]
[2021-08-16T14:56:27,500][INFO ][o.e.p.PluginsService ] [lxw-node-1] loaded module [tribe]
[2021-08-16T14:56:27,501][INFO ][o.e.p.PluginsService ] [lxw-node-1] no plugins loaded
[2021-08-16T14:56:28,679][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [lxw-node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [http.cors.allow‐origin] did you mean [http.cors.allow-origin]?
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.1.jar:6.2.1]
Caused by: java.lang.IllegalArgumentException: unknown setting [http.cors.allow鈥恛rigin] did you mean [http.cors.allow-origin]?
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:346) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:310) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:284) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:134) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.node.Node.<init>(Node.java:331) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.1.jar:6.2.1]
解决方法:
将原来的:注意版本问题,不同版本兼容性不一样
补充:解决Elasticsearch(Windows)闪退问题
进入Elasticsearch安装目录下的config目录,修改elasticsearch.yml文件.在文件的末尾加入以下代码
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: heck
node.name: master
network.host: 127.0.0.1
发现持续闪退。这时候我一开始只加入前两行的时候,发现可以正常运行。于是推理了一下,其实可以看日志,但是可能我比较懒,直接感觉加的ip绑定有问题,于是删除最后一行,重新保存启动,发现可以正常运行,好像是因为Elasticsearch是跨域的,具体可能是什么问题,没有细查
2月27
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
Download Elasticsearch
https://www.elastic.co/cn/downloads/elasticsearch
因为这里本机已经安装运行,为了演示从零开始,我们在Windows沙盒中演示,Win10操作系统的沙盒http://www.javacui.com/tool/660.html 。
因为沙盒开始是一个纯净的系统,所以需要安装ZIP工具,安装文本编辑工具方便修改配置文件。
这里下载了elasticsearch-8.2.2-windows-x86_64,可以根据网站提示下载最新版本,虽然ES依赖JDK,但是ES安装文件内置了JDK,因为纯净的系统上无需安装再次安装JDK,直接运行bin下elasticsearch.bat即可。
初次启动,显示的配置信息,一定要保存下来,以备使用。
访问https://127.0.0.1:9200,注意是HTTPS不是HTTP,用户名密码刚才控制台已经打印出来了。
证明安装成功。
问题1:内存直接占满
此时你打开任务管理器,发现一个问题,ES启动后,占据了沙盒的全部内存。我的本机是32G的,启动也是直接打满,导致系统卡爆。
因此我们需要配置启动内存,配置文件conf/jvm.options
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## which should be named with .options suffix, and the min and
## max should be set to the same value. For example, to set the
## heap to 4 GB, create a new file in the jvm.options.d
## directory containing these lines:
##
-Xms1g
-Xmx1g
在这里修改为合适的内存,这里修改为1G,沙盒全部内存是4G,合理配置即可。
问题2:二次启动报错
修改配置文件后,再次启动,这时不会再次打印第一次启动时的配置信息了。但是报错了
[2022-06-16T10:40:55,562][ERROR][o.e.i.g.GeoIpDownloader ] [06A8DD4C-A847-4] exception during geoip databases update
org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active
at org.elasticsearch.ingest.geoip.GeoIpDownloader.updateDatabases(GeoIpDownloader.java:135) ~[ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.ingest.geoip.GeoIpDownloader.runDownloader(GeoIpDownloader.java:275) [ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:102) [ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:48) [ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.persistent.NodePersistentTasksExecutor$1.doRun(NodePersistentTasksExecutor.java:42) [elasticsearch-8.2.2.jar:8.2.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:773) [elasticsearch-8.2.2.jar:8.2.2]
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-8.2.2.jar:8.2.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
因为他启动时会去更新地图的一些数据库,这里直接禁掉即可,用到时再说,配置文件conf/elasticsearch.yml,增加配置
ingest.geoip.downloader.enabled: false
问题3:本地测试不想用用户密码和SSL
本身ES服务器也不会对外开放,增加用户密码和SSL对于初学来说,徒增不必要的麻烦,这里直接干掉,还是那句话,用到再说。
配置文件conf/elasticsearch.yml,修改配置
# Enable security features
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: false
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
cluster.initial_master_nodes: ["06A8DD4C-A847-4"]
# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0
# Allow other nodes to join the cluster from anywhere
# Connections are encrypted and mutually authenticated
#transport.host: 0.0.0.0
原来都是true,这里都改成了false,前面是要求用户登录的,后面是要求SSL的,没必要,干掉。
再次启动访问http://127.0.0.1:9200 ,可以直接打开使用。
Download Elasticsearch
https://www.elastic.co/cn/downloads/elasticsearch
因为这里本机已经安装运行,为了演示从零开始,我们在Windows沙盒中演示,Win10操作系统的沙盒http://www.javacui.com/tool/660.html 。
因为沙盒开始是一个纯净的系统,所以需要安装ZIP工具,安装文本编辑工具方便修改配置文件。
这里下载了elasticsearch-8.2.2-windows-x86_64,可以根据网站提示下载最新版本,虽然ES依赖JDK,但是ES安装文件内置了JDK,因为纯净的系统上无需安装再次安装JDK,直接运行bin下elasticsearch.bat即可。
初次启动,显示的配置信息,一定要保存下来,以备使用。
访问https://127.0.0.1:9200,注意是HTTPS不是HTTP,用户名密码刚才控制台已经打印出来了。
证明安装成功。
问题1:内存直接占满
此时你打开任务管理器,发现一个问题,ES启动后,占据了沙盒的全部内存。我的本机是32G的,启动也是直接打满,导致系统卡爆。
因此我们需要配置启动内存,配置文件conf/jvm.options
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## which should be named with .options suffix, and the min and
## max should be set to the same value. For example, to set the
## heap to 4 GB, create a new file in the jvm.options.d
## directory containing these lines:
##
-Xms1g
-Xmx1g
在这里修改为合适的内存,这里修改为1G,沙盒全部内存是4G,合理配置即可。
问题2:二次启动报错
修改配置文件后,再次启动,这时不会再次打印第一次启动时的配置信息了。但是报错了
[2022-06-16T10:40:55,562][ERROR][o.e.i.g.GeoIpDownloader ] [06A8DD4C-A847-4] exception during geoip databases update
org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active
at org.elasticsearch.ingest.geoip.GeoIpDownloader.updateDatabases(GeoIpDownloader.java:135) ~[ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.ingest.geoip.GeoIpDownloader.runDownloader(GeoIpDownloader.java:275) [ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:102) [ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:48) [ingest-geoip-8.2.2.jar:8.2.2]
at org.elasticsearch.persistent.NodePersistentTasksExecutor$1.doRun(NodePersistentTasksExecutor.java:42) [elasticsearch-8.2.2.jar:8.2.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:773) [elasticsearch-8.2.2.jar:8.2.2]
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-8.2.2.jar:8.2.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
因为他启动时会去更新地图的一些数据库,这里直接禁掉即可,用到时再说,配置文件conf/elasticsearch.yml,增加配置
ingest.geoip.downloader.enabled: false
问题3:本地测试不想用用户密码和SSL
本身ES服务器也不会对外开放,增加用户密码和SSL对于初学来说,徒增不必要的麻烦,这里直接干掉,还是那句话,用到再说。
配置文件conf/elasticsearch.yml,修改配置
# Enable security features
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: false
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
cluster.initial_master_nodes: ["06A8DD4C-A847-4"]
# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0
# Allow other nodes to join the cluster from anywhere
# Connections are encrypted and mutually authenticated
#transport.host: 0.0.0.0
原来都是true,这里都改成了false,前面是要求用户登录的,后面是要求SSL的,没必要,干掉。
再次启动访问http://127.0.0.1:9200 ,可以直接打开使用。
3月30
写本文的缘由:
由于近期本人团队内一个90后员工提出离职,引发本人对员工离职原因及90后员工培养方式的深入思考。
(注:可能分析有些片面,有些就事论事的意思,而且员工年轻化是一个趋势,这里提出90后只是便于就此事展开问题分析)
问题分析思路:
- 优先对85前及90后员工的普遍性格特性进行归纳、分析和对比。
- 针对不同的性格特征,阐述不同的培养方式。
- 依据上述结论,结合本次员工离职分析工作中的得失。
性格分析对比:这里不提及性格优势是为了引出后面的培养方式,不是否认90后的性格优势。
85前员工性格特点 | 90后员工性格特点 | 形成原因 |
思想独立 | 依赖他人 | 家长过分的溺爱,让孩子缺乏自己决策、思考的机会 |
行为有目标 | 行为无目标 | 从家庭到教育都是随波逐流,造成无意识的盲从,急于看中眼前成效 |
内心强大 | 内心脆弱 | 家长过分的溺爱,顺境的生长环境,让孩子没有机会犯错与承担 |
成就感来自内在 | 成就感来自外在 | 思想独立决定了85前的成就感源自内心的成长,90后更渴望来自他人的承认与赞美 |
团队意识弱 | 更强的团队意识 | 90后员工之间私下交流沟通比较多,工作中可以进行更有效的合作,帮助。 |
3月30
为什么项目会变得紧急?
其实在我们的现实项目中有很多时候,项目会被要求在一个看上去似乎不现实的条件下完成,因素很多,总结一下:
1、为了争夺或抢占市场。
2、为了向客户或领导演示汇报。
3、向重要的客户承诺在较短的时间进行交付。
如何处理紧急项目?
1. 明确目标
用户需求:项目总要有产出,在着手列计划开始工作之前,请先与客户沟通,明确客户想要的是什么?
1、系统功能完整,质量良好,并投入使用。
2、完成核心功能的开发,并投入使用。
3、了解项目进度,系统界面和功能设计,或向上级领导汇报。
我想我们更多的情况是后两者。
1月29
开发经理是个工作压力比较大的职位。作为“中间人”,你需要在管理层、客户、销售、开发人员等多种角色之间周旋。没人会注意你的工作做得有多好:一切都运转顺利,工作进展得波澜不惊,所有人都各得所需。但如果事情失败了,不论什么原因,可都是你的错。
要成为一名成功的开发经理,秘诀就是管理好期望,第一步就是确保所有人都理解你的职能。你和你工作相关的人,都要对开发经理的期许达成一致。
我看过很多开发经理的招聘信息,但我都不太赞同上面的描述。有一个要求深入了解大量编程语言和环境,还有一个要求66%的时间进行编程(为什么不直接写三分之二?),还有一些要求有PMO认证,类似的要求不一而足。我承认开发经理的职能是有点儿模糊不清,但像这样的招聘信息让我觉得发布这些职位的公司并没有真正思考过开发经理的职能。这种情况对公司和受雇的人来说都后患无穷。
作为开发经理,你要承担很多责任,但重要的是发布产品。你的目标是采取所有必要的措施,确保能把产品交付给客户或市场。要做到这一点,你需要确保开发团队能尽可能高效地工作,而且要确保他们有明确的目标(无论是短期的还是长期的),扫除阻碍他们工作的一切障碍。从最初的项目范围,到在客户网站上部署产品,每一步都是你的职责。你可以(而且应该)尽量把事情委派给下属去做,但你要检查事情是否和你预期的一样,如果不是可要自己投入。
项目范围界定
作为开发经理,你需要知道如何界定项目的范围。根据你所在组织的情况以及你和外部群组的协作方式,这可能是你工作的重要组成部分。如果你经常承担、负责第三方的项目,那你应该知道如何对RFP(需求建议书)作出回应,包括交付物、时间表和预算等。即便你只做内部项目,没有正式的文档系统,你也应该养成为每个项目写一份项目范围说明书的习惯。另外,如果你从事的是敏捷开发,这些文档就要随着项目的进展持续维护和更新。
“总置顶”项目
这是项目范围界定的一部分,但它应该单独说明一下。我听大家谈论过“总置顶”项目,这类项目不需要预算和时间表。这可是错误的!如果弄不清楚成本和交付物对这些“总置顶”项目有怎样的依赖,那可能会扼杀你的团队,因为这些“总置顶”项目会拖延进度、消耗其他工作需要的资源。你承担的每个项目至少都要有一个内部成本和一个交付物。你要和其他利益相关方一起协商你所承担的一切。
要成为一名成功的开发经理,秘诀就是管理好期望,第一步就是确保所有人都理解你的职能。你和你工作相关的人,都要对开发经理的期许达成一致。
我看过很多开发经理的招聘信息,但我都不太赞同上面的描述。有一个要求深入了解大量编程语言和环境,还有一个要求66%的时间进行编程(为什么不直接写三分之二?),还有一些要求有PMO认证,类似的要求不一而足。我承认开发经理的职能是有点儿模糊不清,但像这样的招聘信息让我觉得发布这些职位的公司并没有真正思考过开发经理的职能。这种情况对公司和受雇的人来说都后患无穷。
作为开发经理,你要承担很多责任,但重要的是发布产品。你的目标是采取所有必要的措施,确保能把产品交付给客户或市场。要做到这一点,你需要确保开发团队能尽可能高效地工作,而且要确保他们有明确的目标(无论是短期的还是长期的),扫除阻碍他们工作的一切障碍。从最初的项目范围,到在客户网站上部署产品,每一步都是你的职责。你可以(而且应该)尽量把事情委派给下属去做,但你要检查事情是否和你预期的一样,如果不是可要自己投入。
项目范围界定
作为开发经理,你需要知道如何界定项目的范围。根据你所在组织的情况以及你和外部群组的协作方式,这可能是你工作的重要组成部分。如果你经常承担、负责第三方的项目,那你应该知道如何对RFP(需求建议书)作出回应,包括交付物、时间表和预算等。即便你只做内部项目,没有正式的文档系统,你也应该养成为每个项目写一份项目范围说明书的习惯。另外,如果你从事的是敏捷开发,这些文档就要随着项目的进展持续维护和更新。
“总置顶”项目
这是项目范围界定的一部分,但它应该单独说明一下。我听大家谈论过“总置顶”项目,这类项目不需要预算和时间表。这可是错误的!如果弄不清楚成本和交付物对这些“总置顶”项目有怎样的依赖,那可能会扼杀你的团队,因为这些“总置顶”项目会拖延进度、消耗其他工作需要的资源。你承担的每个项目至少都要有一个内部成本和一个交付物。你要和其他利益相关方一起协商你所承担的一切。
7月24
看到很多社交平台的开发者喜欢通过类似游戏的机制来提升用户参与度,比如积分、等级、排行榜等等。这些特性确实可以吸引用户加入,却并不能长期维持用户的参与度。这是因为利用积分、等级、排行榜这些方法,是把所有用户放在一个同等的平台上让他们竞争;而相反的,成功的社交平台会把用户分成不同类型的组,区别对待。
最关键的分组标准是:高级别用户(高手)和低级别用户(新手)。高手用户一般比较忠诚、热心、技巧熟练,是社区的灵魂人物。新手则代表了社区的不断发展。一个健康成长的社区必须让这两种用户都积极参与。
在一个理想的社区,新手和高手是相互需要的。他们会形成类似于经济学家所谓的“双边市场”那样的环境。显而易见的是,新手们期待着变成高手,所以需要有经验的用户给他们指引,带领他们迅速入门。而高手们虽然已经达到顶峰,却同样迫切地需要新手。通过帮助新手,他们得以展示娴熟的技巧和丰富的经验。心理学家称之为“给予者的快乐”。最近神经科学也表明,“利他主义”的行为可以促进分泌多巴胺(快乐激素)。因此,“帮助新手”可以让高手们更积极地参与平台的互动。
总而言之,社交平台要成功地让用户参与其中,就要让高手们无私地帮助新手,而形成一个有效的互动循环——“高手-新手互助机制”——低级别用户受到照顾,而高级别用户感到满足。
最关键的分组标准是:高级别用户(高手)和低级别用户(新手)。高手用户一般比较忠诚、热心、技巧熟练,是社区的灵魂人物。新手则代表了社区的不断发展。一个健康成长的社区必须让这两种用户都积极参与。
在一个理想的社区,新手和高手是相互需要的。他们会形成类似于经济学家所谓的“双边市场”那样的环境。显而易见的是,新手们期待着变成高手,所以需要有经验的用户给他们指引,带领他们迅速入门。而高手们虽然已经达到顶峰,却同样迫切地需要新手。通过帮助新手,他们得以展示娴熟的技巧和丰富的经验。心理学家称之为“给予者的快乐”。最近神经科学也表明,“利他主义”的行为可以促进分泌多巴胺(快乐激素)。因此,“帮助新手”可以让高手们更积极地参与平台的互动。
总而言之,社交平台要成功地让用户参与其中,就要让高手们无私地帮助新手,而形成一个有效的互动循环——“高手-新手互助机制”——低级别用户受到照顾,而高级别用户感到满足。
3月22
1、网站规模越来越大,运营美工技术人才的缺乏如何解决?
很多站长自己都是兼职搞网站,更不要说请别人来全职来帮你了,而且网站刚刚起步,给别人支付报酬也是不现实的。可能你的网站有一批很尽职的斑竹,但是不要忘记了大家都有自己的主业,仅仅是凭热情,但是热情总归会有磨灭的一天,而且你也不太可能把重要的工作,比如服务器,数据库设置,洽谈广告业务,等交给一个你从来没见过面的网友或者斑竹的。
2、网站资金缺口如何解决
融资?你连一个公司,实体 都没有,写不出高水平的计划书,怎么融,找谁融,而且你缺乏金融法律知识,就算有人想投资,也会把你的网站价值往死里压,到头来是给别人打工。
3、如何处理和合伙者的关系
可能你有合伙人,大家有共同的兴趣爱好,一起打理网站,可是怎么在初期克服浮躁心里,处理好合伙人的关系,重大决策你们谁说了算,利益和责任怎么分配。
4、主业还是副业
可能你另外有不错的工作,网站也慢慢发展起来,你对网站也很看好。但是同时你的时间也越来越不够了,由于花费大量业余时间在网站,占用了休息时间,你的工作不可能不受到影响,你的女朋友不可能没有怨言,在问题1 2 3 都没有很好解决的情况下。你是不是会辞掉工作,把网站当成主业呢。
很多站长自己都是兼职搞网站,更不要说请别人来全职来帮你了,而且网站刚刚起步,给别人支付报酬也是不现实的。可能你的网站有一批很尽职的斑竹,但是不要忘记了大家都有自己的主业,仅仅是凭热情,但是热情总归会有磨灭的一天,而且你也不太可能把重要的工作,比如服务器,数据库设置,洽谈广告业务,等交给一个你从来没见过面的网友或者斑竹的。
2、网站资金缺口如何解决
融资?你连一个公司,实体 都没有,写不出高水平的计划书,怎么融,找谁融,而且你缺乏金融法律知识,就算有人想投资,也会把你的网站价值往死里压,到头来是给别人打工。
3、如何处理和合伙者的关系
可能你有合伙人,大家有共同的兴趣爱好,一起打理网站,可是怎么在初期克服浮躁心里,处理好合伙人的关系,重大决策你们谁说了算,利益和责任怎么分配。
4、主业还是副业
可能你另外有不错的工作,网站也慢慢发展起来,你对网站也很看好。但是同时你的时间也越来越不够了,由于花费大量业余时间在网站,占用了休息时间,你的工作不可能不受到影响,你的女朋友不可能没有怨言,在问题1 2 3 都没有很好解决的情况下。你是不是会辞掉工作,把网站当成主业呢。
3月5
最近晚上有空在研读和学习Avinash的《精通Web Analytics 2.0》,收获很多,结合日常的工作实践,今天做一个阶段性小总结,成文一篇说说:如何正确启动网站分析工作。
网站分析从哪里入手?这是出镜率最高的问题之一,尤其是新入行的朋友尤其青睐此问题。
当打开网站分析系统时,你将看到非常多的数据项,可能远比你预想的多,比如:访问次数、浏览量、跳出率、唯一访客数、访客地域分布、搜索流量、关键词导入量、引荐流量、网页内容分析(目标网页、退出网页),以及转化率等。看到如此丰富且眼花缭乱的数据项时,不要慌不要急,对于这些很细节的问题,建议先不要过度关注,否则很容易陷入“只见树木,不见森林”的误区。
那应该关注什么呢?建议刚开始做网站分析的时候,一定要站在高处,从宏观上入手,先问自己4个问题:
1. 多少访客(UV)来到网站?
这是第一个要问自己的简单问题,网站的访问次数和独立访客数量(UV)是网站分析中最基础的2项指标,这两项指标都是要关注长期变化趋势的,尽量拉长关注周期,这样就可以看到一些季节性的变化趋势,从而为运营战略提供理性的参考。
网站分析从哪里入手?这是出镜率最高的问题之一,尤其是新入行的朋友尤其青睐此问题。
当打开网站分析系统时,你将看到非常多的数据项,可能远比你预想的多,比如:访问次数、浏览量、跳出率、唯一访客数、访客地域分布、搜索流量、关键词导入量、引荐流量、网页内容分析(目标网页、退出网页),以及转化率等。看到如此丰富且眼花缭乱的数据项时,不要慌不要急,对于这些很细节的问题,建议先不要过度关注,否则很容易陷入“只见树木,不见森林”的误区。
那应该关注什么呢?建议刚开始做网站分析的时候,一定要站在高处,从宏观上入手,先问自己4个问题:
1. 多少访客(UV)来到网站?
这是第一个要问自己的简单问题,网站的访问次数和独立访客数量(UV)是网站分析中最基础的2项指标,这两项指标都是要关注长期变化趋势的,尽量拉长关注周期,这样就可以看到一些季节性的变化趋势,从而为运营战略提供理性的参考。
3月5
此时,SEO盛行,不管黑帽白帽灰帽什么的,还是各种帽子混合戴的,最近几年,SEO之风大行其道。有人说,SEO那是在和搜索引擎斗智斗勇;有人说,SEO是在追随搜索引擎的脚步,都是为了用户体验。搜索引擎对待SEO的态度我们暂且认为正如他们官方所说的,支持白帽,反对黑帽。究竟是什么,我们也不知道。
在SEO如此盛行之下,搜索引擎自然是对SEOER的各种操作做了各种对应的规则算法,至于是哪些规则算法,我也不知道。不知道并不代表我们没有好的办法去操作,优化当中,外部链接的建设乃是重中之重,再次不再赘述。既然如此,搜索引擎对于一个网站的外部链接自然是做了N多的算法以及判断它的质量。我想当下做SEO都知道,搜索引擎对于故意操作排名的网站是有成见的,更别说恶意操作排名的网站,更是深恶痛绝。我们且不管故意是否属于恶意,试问哪个SEOER不是在故意操作搜索引擎的排名?难不成还有哪个是一不小心把网站的排名做的很好了?真没见过,既然如此,我们要故意的去操作它,而管这个事情的家伙又非常不喜欢我们去操作它,怎么办呢?人向来就是这样,表面一套,实际一套。当然,我们做优化也要一样,各种行为看似正常,其实都是我们有目的性的操作的。举个大家都知道且浅显的例子,拿文章内链来说说,一篇文章A描述表达的核心是XXX,B文章中恰好又出现了XXX这个词,那么我们便在B文章中给XXX做了一个链接,链接到A文章。这一点对用户体验很友好,搜索引擎自然给予这个链接的权重就比较高。既然如此,我想只要我们做的不过分,搜索引擎还是判断不出来这个词的出现是我们故意的还是自然出现的。分辨不出来那便会认为是自然的,这种情况看似为了提高用户体验,实际上是我们为了提高A页面XXX关键词的排名而撰写的文章(不乏部分文章是自然出现的)。这便是我所要表达的意思,一切遵循搜索引擎所谓的用户体验来操作,在这个操作下面藏着的是我们的真实目的。
在SEO如此盛行之下,搜索引擎自然是对SEOER的各种操作做了各种对应的规则算法,至于是哪些规则算法,我也不知道。不知道并不代表我们没有好的办法去操作,优化当中,外部链接的建设乃是重中之重,再次不再赘述。既然如此,搜索引擎对于一个网站的外部链接自然是做了N多的算法以及判断它的质量。我想当下做SEO都知道,搜索引擎对于故意操作排名的网站是有成见的,更别说恶意操作排名的网站,更是深恶痛绝。我们且不管故意是否属于恶意,试问哪个SEOER不是在故意操作搜索引擎的排名?难不成还有哪个是一不小心把网站的排名做的很好了?真没见过,既然如此,我们要故意的去操作它,而管这个事情的家伙又非常不喜欢我们去操作它,怎么办呢?人向来就是这样,表面一套,实际一套。当然,我们做优化也要一样,各种行为看似正常,其实都是我们有目的性的操作的。举个大家都知道且浅显的例子,拿文章内链来说说,一篇文章A描述表达的核心是XXX,B文章中恰好又出现了XXX这个词,那么我们便在B文章中给XXX做了一个链接,链接到A文章。这一点对用户体验很友好,搜索引擎自然给予这个链接的权重就比较高。既然如此,我想只要我们做的不过分,搜索引擎还是判断不出来这个词的出现是我们故意的还是自然出现的。分辨不出来那便会认为是自然的,这种情况看似为了提高用户体验,实际上是我们为了提高A页面XXX关键词的排名而撰写的文章(不乏部分文章是自然出现的)。这便是我所要表达的意思,一切遵循搜索引擎所谓的用户体验来操作,在这个操作下面藏着的是我们的真实目的。
1月4
通常在我们的项目管理中,里程碑管理是一个具有特定重要性的事件,通常代表项目工作中一个重要阶段的完成。在里程碑处,通常要计划进行检查。里程碑管理实际上很象是项目管理中的节点管理,如果将胎儿怀孕过程看作一个项目,那么里程碑管理就像定期做超声波检查,在什么月份,婴儿应该发育了哪些器官,揭示出胎儿发育项目的状况,因而制定采取可能的应对措施。
1.特性
A.横向性
里程碑管理是和项目管理中的九大管理模块不同的是,它是一种重要的项目管理方法,它具有横向性,不同的项目领域有不同的里程碑管理,但不论是哪个领域的里程碑管理都无例外的具有横向性。
B.相对宽泛的时效性
是根据不同的项目特点确定里程碑管理的时效性,但是每个里程碑都有相对的时间点,但却不向项目中每个任务有严格的时间点或间隔,在实际项目管理的里程碑管理的实际操作中往往都有相对较宽松的时间要求,一般在电子产品的项目中至少有一个星期的可灵活掌握里程碑的审核会议的召开时间。
项目管理培训C.非强迫性项目管理论坛不是所有的里程碑的流程都规定,如果里程碑管理审核中错在重要的风险,项目必须暂停或终止,有的里程碑管理的审核一般是由项目经理发起的,但不是所有的项目经理都有权叫停项目,所以有些项目不管里程碑审核出风险有多大,对项目的进程甚至无关痛痒。
1.特性
A.横向性
里程碑管理是和项目管理中的九大管理模块不同的是,它是一种重要的项目管理方法,它具有横向性,不同的项目领域有不同的里程碑管理,但不论是哪个领域的里程碑管理都无例外的具有横向性。
B.相对宽泛的时效性
是根据不同的项目特点确定里程碑管理的时效性,但是每个里程碑都有相对的时间点,但却不向项目中每个任务有严格的时间点或间隔,在实际项目管理的里程碑管理的实际操作中往往都有相对较宽松的时间要求,一般在电子产品的项目中至少有一个星期的可灵活掌握里程碑的审核会议的召开时间。
项目管理培训C.非强迫性项目管理论坛不是所有的里程碑的流程都规定,如果里程碑管理审核中错在重要的风险,项目必须暂停或终止,有的里程碑管理的审核一般是由项目经理发起的,但不是所有的项目经理都有权叫停项目,所以有些项目不管里程碑审核出风险有多大,对项目的进程甚至无关痛痒。