elasticsearch,Macos,elasticsearch" /> elasticsearch,Macos,elasticsearch" />

Macos 将ElasticSearch群集设置为绿色(在OS X上设置群集)

Macos 将ElasticSearch群集设置为绿色(在OS X上设置群集),macos,elasticsearch,Macos,elasticsearch,我有。它起作用了。集群以“绿色”开始。然而,在添加数据之后,它立即变为“黄色” 群集运行状况为:绿色、黄色或红色。在碎片级别上,红色状态表示未在集群中分配特定碎片,黄色表示已分配主碎片,但未分配副本,绿色表示已分配所有碎片。索引级别状态由最差碎片状态控制。群集状态由最差索引状态控制 因此,我的副本碎片没有分配。我如何分配它们?(我正在大声思考。) Shay on表示:“碎片分配机制不会在同一节点上分配碎片及其副本,尽管它会在同一节点上分配不同的碎片。因此,需要两个节点才能获得绿色的集群状态。”

我有。它起作用了。集群以“绿色”开始。然而,在添加数据之后,它立即变为“黄色”

群集运行状况为:绿色、黄色或红色。在碎片级别上,红色状态表示未在集群中分配特定碎片,黄色表示已分配主碎片,但未分配副本,绿色表示已分配所有碎片。索引级别状态由最差碎片状态控制。群集状态由最差索引状态控制

因此,我的副本碎片没有分配。我如何分配它们?(我正在大声思考。)

Shay on表示:“碎片分配机制不会在同一节点上分配碎片及其副本,尽管它会在同一节点上分配不同的碎片。因此,需要两个节点才能获得绿色的集群状态。”

所以,我需要启动第二个节点。我是这样做的:

cd ~/Library/LaunchAgents/ cp homebrew.mxcl.elasticsearch.plist homebrew.mxcl.elasticsearch-2.plist # change line 8 to: homebrew.mxcl.elasticsearch-2 launchctl load -wF ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch-2.plist 更新2012-08-13美国东部时间晚上11:35: 要澄清的是,我的问题是不是如何通过设置
index.number\u复制副本的数量来“忽略”问题:0
。我想要多个连接的节点

更新2012-08-13美国东部时间晚上11:48 我刚发了一封信。在我看来,两个节点都称自己为“主节点”。这是我应该期待的吗

更新时间:美国东部时间12:36
小说还在继续!:)如果我断开Mac与所有外部网络的连接,然后重新启动节点,那么它们就会找到彼此。双低音。这使我认为问题在于我的网络/多播配置。目前我的配置中有这个:
network.host:127.0.0.1
。也许这是不正确的?

正如您正确地注意到的那样,群集变为黄色,因为您创建了一个包含副本的索引,但群集中只有一个节点。解决此问题的一种方法是在第二个节点上分配它们。另一种方法是关闭复制副本。可以在过程中指定副本的数量。下面的命令将创建一个名为
newindex name
的新索引,其中有1个碎片,没有副本

curl -XPUT 'localhost:9200/new-index-name' -d '
{
    "settings": {
        "index" : {
            "number_of_shards" : 1,
            "number_of_replicas" : 0
        }
    }
}
'
在使用创建索引之后,还可以更改副本的数量。以下命令将群集中所有索引的副本数更改为0:

curl -XPUT 'localhost:9200/_settings' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}
'
您可以通过运行群集运行状况命令来验证节点是否相互找到:

$ curl "http://localhost:9200/_cluster/health?pretty=true"
{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 30,
  "active_shards" : 55,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
} 
这里的
行“数据节点数”:2,
表示我的集群由两个节点组成,这意味着它们彼此找到了对方。您还可以运行命令查看集群由哪些节点组成:

curl "http://localhost:9200/_cluster/nodes?pretty=true"

解决了。不要使用
network.host:127.0.0.1
。保留注释掉的那一行,让它自动派生

默认的
elasticsearch.yml
是正确的。A指定
127.0.0.1
环回接口:

# Set up ElasticSearch for local development:
inreplace "#{prefix}/config/elasticsearch.yml" do |s|
  # ...
  # 3. Bind to loopback IP for laptops roaming different networks
  s.gsub! /#\s*network\.host\: [^\n]+/, "network.host: 127.0.0.1"
end

我申请了。

我也面临同样的问题。当外部网络打开时,两个节点(两个elasticsearch实例)使用不同的yml文件运行: elasticsearch-config=/usr/local/opt/elasticsearch/config/elasticsearch.yml elasticsearch--config=/usr/local/opt/elasticsearch/config/elasticsearch-1.yml)无法找到彼此,第一个实例处于黄色状态,第二个实例未分配任何repllica

解决者: sudo路线添加-网络224.0.0.0/4 127.0.0.1

参考自:


我想使用一个或多个副本运行,因此我熟悉该设置。问题是:我如何让他们找到其他人?故障排除步骤是什么?您可以发布服务器和elasticsearch.yml文件的日志吗?一切看起来都很好。可能只是时机不好。两台服务器几乎同时启动。尝试启动一台服务器,等待它到达
{0.19.8}[20082]:started
行,然后启动另一台.Hmmm。我不认为这种逻辑有说服力——节点需要在相似的时间启动,并且仍然连接在一起;所以这不应该是根本原因。只是为了检查一下,我在一台电脑上执行了
kill X
,并
launchctl
自动重启了它。但它们仍然是两个独立的节点:(这很奇怪。它应该适用于127.0.0.1。您是否可以发布将discovery和monitor.network设置为跟踪级别的日志文件?
# Set up ElasticSearch for local development:
inreplace "#{prefix}/config/elasticsearch.yml" do |s|
  # ...
  # 3. Bind to loopback IP for laptops roaming different networks
  s.gsub! /#\s*network\.host\: [^\n]+/, "network.host: 127.0.0.1"
end