CentOSへのelasticsearchのインストール方法 | f.c.v.systemのブログ

f.c.v.systemのブログ

IT関連の記事を書いていきます

elasticsearchのインストールの手順メモ


○環境

・Oracle Virtual Box

・Cent OS6.5


○準備

1. javaがインストールされていること


 * インストールされていない場合はインストールを実施

以下はyumでインストールする例

# yum search jdk
# yum install java-1.7.0-openjdk.x86_64

# yum list installed | grep jdk

java-1.7.0-openjdk.x86_64


○手順

以下のダウンロードページ

http://www.elasticsearch.org/overview/elkdownloads/

では、zipやtar形式でも配布されているが、

以下ではrpmでインストールした場合の手順とする。


①インストール用のディレクトリを作成


ここでは /opt/elasticsearch配下をインストールディレクトリとして利用する。


# mkdir /opt/elasticsearch/
# cd /opt/elasticsearch/


②rpmを/opt/elasticsearch配下に配置する。


http://www.elasticsearch.org/overview/elkdownloads/ から取得して、

winscp等で配置してもよいし、以下のようにwget等で配置してもよい。


* 以下のバージョン1.3.4は2014/11/01時点のもの


# wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.4.noarch.rpm


③rpmコマンドを使用してインストールする。


# rpm -ivh elasticsearch-1.3.4.noarch.rpm


④chkconfigコマンドにて、サービス自動起動を設定する


# chkconfig --add elasticsearch

# chkconfig --list | grep elasticsearch
elasticsearch 0:off 1:off 2:on 3:on 4:on 5:on 6:off


⑤elasticsearchを起動する

# service elasticsearch start
elasticsearch を起動中: [ OK ]


起動はOKとなっていたが、elasticsearchのログをみるとエラーが。

(ログはデフォルトだと「/var/log/elasticsearch/elasticsearch.log」)


[2014-11-01 00:00:00,000][WARN ][common.network           ] failed to resolve local host, fallback to loopback
java.net.UnknownHostException: <ホスト名>: <ホスト名>: Name or service not known
        at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
        at org.elasticsearch.common.network.NetworkUtils.(NetworkUtils.java:54)
        at org.elasticsearch.transport.netty.NettyTransport.(NettyTransport.java:204)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.elasticsearch.common.inject.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:54)
        at org.elasticsearch.common.inject.ConstructorInjector.construct(ConstructorInjector.java:86)
        at org.elasticsearch.common.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:98)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
        at org.elasticsearch.common.inject.InjectorImpl.callInContext(InjectorImpl.java:837)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
        at org.elasticsearch.common.inject.Scopes$1$1.get(Scopes.java:57)
        at org.elasticsearch.common.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at org.elasticsearch.common.inject.FactoryProxy.get(FactoryProxy.java:52)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
        at org.elasticsearch.common.inject.InjectorImpl.callInContext(InjectorImpl.java:837)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
        at org.elasticsearch.common.inject.Scopes$1$1.get(Scopes.java:57)
        at org.elasticsearch.common.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at org.elasticsearch.common.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42)
        at org.elasticsearch.common.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66)
        at org.elasticsearch.common.inject.ConstructorInjector.construct(ConstructorInjector.java:85)
        at org.elasticsearch.common.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:98)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
        at org.elasticsearch.common.inject.InjectorImpl.callInContext(InjectorImpl.java:837)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
        at org.elasticsearch.common.inject.Scopes$1$1.get(Scopes.java:57)
        at org.elasticsearch.common.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at org.elasticsearch.common.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42)
        at org.elasticsearch.common.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66)
        at org.elasticsearch.common.inject.ConstructorInjector.construct(ConstructorInjector.java:85)
        at org.elasticsearch.common.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:98)
        at org.elasticsearch.common.inject.FactoryProxy.get(FactoryProxy.java:52)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
        at org.elasticsearch.common.inject.InjectorImpl.callInContext(InjectorImpl.java:837)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
        at org.elasticsearch.common.inject.Scopes$1$1.get(Scopes.java:57)
        at org.elasticsearch.common.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at org.elasticsearch.common.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42)
        at org.elasticsearch.common.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66)
        at org.elasticsearch.common.inject.ConstructorInjector.construct(ConstructorInjector.java:85)
        at org.elasticsearch.common.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:98)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
        at org.elasticsearch.common.inject.InjectorImpl.callInContext(InjectorImpl.java:837)
        at org.elasticsearch.common.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
        at org.elasticsearch.common.inject.Scopes$1$1.get(Scopes.java:57)
        at org.elasticsearch.common.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at org.elasticsearch.common.inject.InjectorBuilder$1.call(InjectorBuilder.java:200)
        at org.elasticsearch.common.inject.InjectorBuilder$1.call(InjectorBuilder.java:193)
        at org.elasticsearch.common.inject.InjectorImpl.callInContext(InjectorImpl.java:830)
        at org.elasticsearch.common.inject.InjectorBuilder.loadEagerSingletons(InjectorBuilder.java:193)
        at org.elasticsearch.common.inject.InjectorBuilder.injectDynamically(InjectorBuilder.java:175)
        at org.elasticsearch.common.inject.InjectorBuilder.build(InjectorBuilder.java:110)
        at org.elasticsearch.common.inject.Guice.createInjector(Guice.java:93)
        at org.elasticsearch.common.inject.Guice.createInjector(Guice.java:70)
        at org.elasticsearch.common.inject.ModulesBuilder.createInjector(ModulesBuilder.java:59)
        at org.elasticsearch.node.internal.InternalNode.(InternalNode.java:192)
        at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:70)
        at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:203)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
Caused by: java.net.UnknownHostException: <ホスト名>: Name or service not known
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
        ... 62 more
どうやらログをみると「failed to resolve local host, fallback to loopback」「<ホスト名>: Name or service not known」と、
ローカルのホスト名が名前解決出来なくてエラーになっているみたい。

とりあえず/etc/hostsにローカルのホスト名を追記

# vi /etc/hosts

127.0.0.1 <ホスト名> #これを追記


ホスト名は

# hostnameで調べることが可能。


再度elasticsearchを起動


# service elasticsearch start
elasticsearch を起動中: [ OK ]


今度はエラーが出力されていないのでOK

[2014-11-01 00:00:00,000][INFO ][node                     ] [Blink] version[1.3.4], pid[2386], build[a70f3cc/2014-09-30T09:07:17Z]
[2014-11-01 00:00:00,000][INFO ][node                     ] [Blink] initializing ...
[2014-11-01 00:00:00,000][INFO ][plugins                  ] [Blink] loaded [], sites []
[2014-11-01 00:00:00,000][INFO ][node                     ] [Blink] initialized
[2014-11-01 00:00:00,000][INFO ][node                     ] [Blink] starting ...
[2014-11-01 00:00:00,000][INFO ][transport                ] [Blink] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/10.0.2.15:9300]}
[2014-11-01 00:00:00,000][INFO ][discovery                ] [Blink] elasticsearch/ucweM8NDQyOcQ9DIJzi05g
[2014-11-01 00:00:00,000][INFO ][cluster.service          ] [Blink] new_master [Blink][ucweM8NDQyOcQ9DIJzi05g][<ホスト名>][inet[/10.0.2.15:9300]], reason: zen-disco-join (elected_as_master)
[2014-11-01 00:00:00,000][INFO ][http                     ] [Blink] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/10.0.2.15:9200]}
[2014-11-01 00:00:00,000][INFO ][node                     ] [Blink] started
[2014-11-01 00:00:00,000][INFO ][gateway                  ] [Blink] recovered [0] indices into cluster_state

インストール完了!

高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)/KADOKAWA / アスキー・メディアワークス
¥価格不明
Amazon.co.jp

サーバ/インフラエンジニア養成読本 ログ収集~可視化編 [現場主導のデータ分析環境を構築!] .../技術評論社
¥2,138
Amazon.co.jp

ElasticSearch Cookbook-【電子書籍】
¥2,272
楽天