5. Windows版 Elasticsearchの導入¶
Windowsサーバーに対してElasticsearchの導入を行う場合の手順を説明します。
5.1 Elasticsearchの設定¶
Senju Service Managerと連携するElasticsearchサーバーの稼働に必要なソフトウェアである、Elasticsearchをインストールするための手順について説明します。
5.1.1 対象バージョン¶
Senju Service Managerと連携するElasticsearchサーバーではElasticSearch 8.17.2、8.19.18または9.4.3 を使用します。
ここでは、ElasticSearch 8.17.2を例として導入手順を説明します。
仕様補足
サポート対象となるElasticsearchのバージョンについては リリースノート を参照してください。
5.1.2 Elasticsearchのインストール¶
-
elasticsearch-8.17.2.zipを入手し稼働させたいディレクトリに展開します。
※以下、展開したディレクトリを%elasticsearch_home%と記載して説明します。
-
Elasticsearch の設定ファイルを編集します。
%elasticsearch_home%\config\elasticsearch.yml
-
cluster.name を ssm-cluster に設定します。
#cluster.name: my-application cluster.name: ssm-cluster -
network.host に Elasticsearch サーバーのループバックアドレス、Elasticsearch サーバーの ホスト名もしくはIP アドレスを指定します。
#network.host: 0.0.0.0 network.host: 127.0.0.1, eshost仕様補足
デフォルトではすべての接続を許可するため、ループバックアドレスおよびElasticsearchサーバーのホスト名もしくはIPアドレスを指定することで、不正なアクセスを拒否しています。
-
cluster.initial_master_nodesにElasticsearchサーバーのホスト名を指定します。
#cluster.initial_master_nodes: ["node-1","node-2"] cluster.initial_master_nodes: ["eshostname"] -
node.nameにElasticsearchサーバーのホスト名を指定します。
#node.name: node-1 node.name: eshostname -
(Kibanaを利用する場合)以下の記載を追加します。
script.max_size_in_bytes: 10000000 -
GeoIpの自動更新を false に設定します。
ingest.geoip.downloader.enabled: false -
Elastic Stackのセキュリティ機能を無効(false)に設定します。
xpack.security.enabled: false -
Elasticsearch のログ設定ファイルを編集します。
elasticsearch_home%\config\log4j2.properties
以下の設定をファイルのappender.rolling.policies.time.modulateの後に追加します。
appender.rolling.strategy.type = DefaultRolloverStrategy appender.rolling.strategy.action.type = Delete appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} appender.rolling.strategy.action.condition.type = IfLastModified appender.rolling.strategy.action.condition.age = 7D appender.rolling.strategy.action.PathConditions.type = IfFileName appender.rolling.strategy.action.PathConditions.glob = ${sys:es.logs.cluster_name}-*修正後のファイルが以下の通りになっていることを確認します
... (省略) appender.rolling.policies.time.modulate = true appender.rolling.strategy.type = DefaultRolloverStrategy appender.rolling.strategy.action.type = Delete appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} appender.rolling.strategy.action.condition.type = IfLastModified appender.rolling.strategy.action.condition.age = 7D appender.rolling.strategy.action.PathConditions.type = IfFileName appender.rolling.strategy.action.PathConditions.glob = ${sys:es.logs.cluster_name}-* appender.rolling.policies.size.type = SizeBasedTriggeringPolicy ... (省略) -
ElasticsearchのHEAPメモリ拡張を編集します。
%elasticsearch_home%\config\ jvm.options
修正前
... (省略) ## -Xms4g ## -Xmx4g ... (省略)修正後
例:
... (省略) -Xms4g -Xmx4g ... (省略)
仕様補足
-Xms および -Xmxは:物理メモリサイズの半分を推奨します。
例:8GBの物理メモリを搭載している場合4GB (4g) を設定してください。
5.1.3 Elasticsearchのインストール確認¶
-
コマンドプロンプトを開いて、以下のコマンドを実行し、Elasticsearchを起動します。
- コマンド
cd %elasticsearch_home%\bin elasticsearch.bat

- コマンド
-
"started"という文言が表示されたら、もう一つコマンドプロンプトを開いて、下記コマンドを実行します。
- コマンド
cd %elasticsearch_home%\bin curl -H "Content-Type: application/json" -XGET "http://localhost:9200/?pretty"
以下のような応答があることを確認します。
... (省略) "cluster_name":"ssm-cluster", ... (省略)
- コマンド
5.2 ElasticSearchの検索設定¶
Senju Service Managerと連携するElasticsearchサーバーで形態素解析に必要なソフトウェアである、Kuromojiをインストールするための手順について説明します。
5.2.1 対象バージョン¶
Senju Service Managerと連携するElasticsearchサーバーではKuromoji 8.17 を使用します。
ここでは、Kuromoji 8.17.2を例として導入手順を説明します。
仕様補足
サポート対象となるKuromojiのバージョンについては リリースノート を参照してください。
5.2.2 ElasticSearchの検索設定¶
-
analysis-kuromoji-8.17.2.zipを入手し任意のディレクトリに展開します。
-
%elasticsearch_home%\plugins\配下に以下の名称のフォルダを作成してください。
- フォルダ名:analysis-kuromoji
-
analysis-kuromoji-8.17.2配下のファイルを作成したフォルダにコピー上書きしてください。
-
コマンドプロンプトを開いて、以下のコマンドを実行し、Elasticsearchを再起動します。
- コマンド
cd %elasticsearch_home%\bin elasticsearch.bat
- コマンド
5.2.3 インストール確認¶
-
Kuromoji(形態素解析ソフトウェアプラグイン)がインストールされていることを確認します。
- コマンド
cd %elasticsearch_home%\bin elasticsearch-plugin list analysis-kuromoji
以下のような出力結果があることを確認します。
analysis-kuromoji
- コマンド
5.2.4 データクローラの設定¶
-
Senju Service Managerのインストールメディアから、elasticsearch-definitionsフォルダのElasticsearch設定ファイルを取得し、インストールするサーバーの任意のディレクトリに格納します。
ファイル名 説明 pipeline_attachment.json パイプライン設定(添付ファイル) sm_mappings.json Index Template(プロセス管理) sm_mappings_ci.json Index Template(構成管理) sm_mappings_faq.json Index Template(FAQ) sm_mappings_filelibrary.json Index Template(ファイルライブラリ) 以降では、上記ファイルを下記ディレクトリに格納した場合を例示いたします。
- ディレクトリパス: %elasticsearch_home%\elasticsearch-definitions\
-
curlコマンドを使用して、パイプライン設定をElasticsearchサーバーに登録します。
- コマンド
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/_ingest/pipeline/attachment?pretty" --data-binary @%elasticsearch_home%\elasticsearch-definitions\pipeline_attachment.json
- コマンド
-
以下のレスポンスが返ってきており、登録が成功したことを確認します。
{ "acknowledged" : true } -
curl コマンドを使用して、IndexTemplateを Elasticsearch サーバーに登録します。
-
プロセス管理の場合
- コマンド
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/_template/doc?pretty" --data-binary @%elasticsearch_home%\elasticsearch-definitions\sm_mappings.json
- コマンド
-
構成管理の場合
- コマンド
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/_template/doc_ci?pretty" --data-binary @%elasticsearch_home%\elasticsearch-definitions\sm_mappings_ci.json
- コマンド
-
FAQの場合
- コマンド
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/_template/doc_faq?pretty" --data-binary @%elasticsearch_home%\elasticsearch-definitions\sm_mappings_faq.json
- コマンド
-
ファイルライブラリの場合
- コマンド
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/_template/doc_filelibrary?pretty" --data-binary @%elasticsearch_home%\elasticsearch-definitions\sm_mappings_filelibrary.json
- コマンド
-
-
以下のレスポンスが返ってきており、登録が成功したことを確認します。
-
プロセス管理の場合
{ "acknowledged" : true }

-
5.2.5 インデックスの作成¶
-
curlコマンドを使用して、Indexを作成します。
-
プロセス管理の場合
- コマンド
curl -XPUT "http://localhost:9200/ssm?pretty"
- コマンド
-
構成管理の場合
- コマンド
curl -XPUT "http://localhost:9200/ssm_ci?pretty"
- コマンド
-
FAQの場合
- コマンド
curl -XPUT "http://localhost:9200/ssm_faq?pretty"
- コマンド
-
ファイルライブラリの場合
- コマンド
curl -XPUT "http://localhost:9200/ssm_filelibrary?pretty"
- コマンド
-
-
以下のレスポンスが返ってきており、登録が成功したことを確認します。
- プロセス管理の場合
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "ssm" }
- プロセス管理の場合
5.3 Elasticsearchへのデータ連携設定¶
Senju Service ManagerからElasticsearchへのデータ連携のためのアプリケーションとしてElasticsearchが提供するLogstashを導入します。
5.3.1 Logstashのインストール¶
logstash-8.17.2.zipを入手し稼働させたいフォルダに展開します。
5.3.2 Logstashの設定¶
-
Senju Service Manager のインストールメディアに格納されているLogstashおよびlogstash-definitions フォルダ一式をインストールするサーバーの任意のディレクトリに格納します。
- フォルダ名: logstash
- フォルダ名: logstash-definitions
以降では、上記フォルダを下記格納フォルダ配下に格納した場合を例示いたします。
- 格納フォルダパス C:\temp\logstash-8.17.2
設定ファイル logstash-xxx.confを以下の通り更新します。
ファイル名 説明 logstash-postgresql.conf 設定ファイル(プロセス管理) logstash-postgresql_ci.conf 設定ファイル(構成管理) logstash-postgresql-faq.conf 設定ファイル(FAQ) logstash-postgresql-filelibrary.conf 設定ファイル(ファイルライブラリ) -
jdbc_connection_string に記載されている PostgreSQL DB への接続情報について、[hostname]:[portnumber]/[dbname] から、SSM DB サーバーの ホスト名:ポート番号/ローカル・ネット・サービス名に変更します。
例としてホスト名:ccfsphost、ポート番号:5432、ローカル・ネット・サービス名:ssmdb に変更する場合を以下に示します。
# jdbc_connection_string =>"jdbc:postgresql://[hostname]: [portnumber]/[dbname]" jdbc_connection_string => " jdbc:postgresql://ccfsphost:5432/ssmdb" -
jdbc_user に記載されている DB ユーザー名について、[username]から、正しいユーザー名に変更します。
例としてDB ユーザー名:ssmuser に変更する場合を以下に示します。
# jdbc_user => "[username]" jdbc_user => "ssmuser" -
jdbc_password に記載されている DB ユーザーのパスワードについて、[password]から、正しいパスワードに変更します。
例としてDB ユーザーのパスワードをssmpwd に変更する場合を以下に示します。
# jdbc_password => "[password]" jdbc_password => "ssmpwd" -
hosts に記載されている Elasticsearch への接続情報について、[protocol]://[hostname]:[portnumber]から、Elasticsearch サーバーのプロトコル://ホスト名:ポート番号に変更します。
例としてプロトコル:http、ホスト名:eshost、ポート番号:9200 に変更する場合を以下に示します。
#hosts => [ "[protocol]://[hostname]:[portnumber]"] hosts => [ "http://eshost:9200"] -
jdbc_driver_library に記載されている Elasticsearch への接続情報について、optから、展開したディレクトリパスに更新します。
例として"C:\temp\logstash-8.17.2\logstash\lib\ojdbc7.jar"に変更する場合を以下に示します。示します。
#jdbc_driver_library => "/opt/logstash/lib/ojdbc7.jar" jdbc_driver_library => "C:\temp\logstash-8.17.2\logstash\lib\ojdbc7.jar" -
last_run_metadata_path に記載されている Elasticsearch への接続情報について、optから、展開したフォルダパスに更新します。
例として "C:\temp\logstash-8.17.2\logstash\conf\.logstash_postgresql_process_fil_last_run"に変更する場合を示します。
- statement_filepath に記載されている Elasticsearch への接続情報について、optから、展開したフォルダパスに更新します。#last_run_metadata_path=> "/opt/logstash/conf/.logstash_postgresql_process_sub_fil_last_run" last_run_metadata_path=> "C:\temp\logstash-8.17.2\logstash\conf\.logstash_postgresql_process_ fil_last_run"例として"C:\temp\logstash-8.17.2\logstash\lib\ojdbc7.jar"に変更する場合を示します。
#statement_filepath => "/opt/logstash/sql/postgresql/get_sm_data_from_process_sub_fil.sql" statement_filepath=> "C:\temp\logstash-8.17.2\logstash\sql\postgresql\get_sm_data_from _process_fil.sql"
-
修正後のファイルは以下のようになります。
-
logstash-postgresql.confの場合
... (省略) input { # for Upsert PROCESS_FIL records jdbc { jdbc_connection_string => "jdbc:postgresql://ccfsphost:5432/ssmdb" jdbc_driver_library => "C:\temp\logstash-8.17.2\logstash\lib\postgresql-42.2.8.jar" jdbc_driver_class => "org.postgresql.Driver" jdbc_user => "ssmuser" jdbc_password => "ssmpwd" schedule => " * * * " last_run_metadata_path => "C:\temp\logstash-8.17.2\logstash\conf\.logstash_ postgresql process_fil_last_run" record_last_run => "true" use_column_value => "true" tracking_column => "update_ts" statement_filepath => "C:\temp\logstash-8.17.2\logstash\sql\postgresql \get_sm_data_from_process_fil.sql" type => "get_process_fil" } # for Upsert PROCESS_SUB_FIL records jdbc { jdbc_connection_string => " jdbc:postgresql://ccfsphost:5432/ssmdb" jdbc_driver_library => "C:\temp\logstash-8.17.2\logstash\lib\postgresql-42.2.8.jar" jdbc_driver_class => "org.postgresql.Driver" jdbc_user => "ssmuser" jdbc_password => "ssmpwd" schedule => " * * * " last_run_metadata_path => "C:\temp\logstash-8.17.2\logstash\conf\.logstash postgresql process_sub_fil_last_run" record_last_run => "true" use_column_value => "true" tracking_column => "update_ts" statement_filepath => "C:\temp\logstash-8.17.2\logstash\sql\postgresql \get_sm_data_from_process_sub_fil.sql" type => "get_process_sub_fil" } ... (省略) # for Upsert PROCESS_TABLE_ITEM_5_FIL records jdbc { jdbc_connection_string => " jdbc:postgresql://ccfsphost:5432/ssmdb" jdbc_driver_library => "C:\temp\logstash-8.17.2\logstash\lib\postgresql-42.2.8.jar" jdbc_driver_class => "org.postgresql.Driver" jdbc_user => "ssmuser" jdbc_password => "ssmpwd" schedule => " * * * " last_run_metadata_path => "C:\temp\logstash-8.17.2\logstash\conf\.logstash postgresql _process_table_item_5_fil_last_run" record_last_run => "true" use_column_value => "true" tracking_column => "update_ts" statement_filepath => "C:\temp\logstash-8.17.2\logstash\sql\postgresql \get_sm_data_from_process_table_item_5_fil.sql" type => "get_process_table_item_5_fil" } ... (省略) output { if [type] == "get_process_fil" { elasticsearch{ hosts => [ "http://eshost:9200"] index => "ssm" document_id => "%{insert_no}" action => "update" retry_on_conflict => 10 doc_as_upsert => true # user => "[elasticusername]" # password => "[elasticpassword]" } } else if [type] == "get_process_sub_fil" { elasticsearch{ hosts => [ "http://eshost:9200"] ... (省略)
-
-
フォルダパス C:\temp\logstash-8.17.2\logstashを確認します。
C:\temp\logstash-8.17.2\logstashパスに「conf」フォルダが存在しない場合、「conf」フォルダを作成してください。
-
設定ファイル pipelines.yml を編集します。
- ファイルパス:C:\temp\logstash-8.17.2\config \pipelines.yml
インデックス(ssm,ssm_faq,ssm_filelibrary,ssm_ci)ごとにpipelineの設定を末尾に追記します。
項目 設定値 pipeline.id (インデックス名) pipeline.workers 1 pipeline.batch.size 1 path.config (設定ファイルのパス) queue.type persisted 修正後のファイルは以下のようになります。
... (省略) - pipeline.id: ssm pipeline.workers: 1 pipeline.batch.size: 1 path.config: "/temp/logstash-8.17.2/logstash-definitions/logstash-postgresql.conf" queue.type: persisted - pipeline.id: ssm_faq pipeline.workers: 1 pipeline.batch.size: 1 queue.type: persisted path.config: "/temp/logstash-8.17.2/logstash-definitions/logstash-postgresql-faq.conf" - pipeline.id: ssm_filelibrary pipeline.workers: 1 pipeline.batch.size: 1 queue.type: persisted path.config: "/temp/logstash-8.17.2/logstash-definitions/logstash-postgresql-filelibrary.conf" - pipeline.id: ssm_ci pipeline.workers: 1 pipeline.batch.size: 1 queue.type: persisted path.config: "/temp/logstash-8.17.2/logstash-definitions/logstash-postgresql_ci.conf" -
Logstash のログ設定ファイル log4j2.properties を編集します。
- ファイルパス:C:\temp\logstash-8.17.2\config\log4j2.properties
以下の設定をファイルのappender.rolling.layout.patternの後に追加します。
appender.rolling.strategy.type = DefaultRolloverStrategy appender.rolling.strategy.action.type = Delete appender.rolling.strategy.action.basepath = ${sys:ls.logs} appender.rolling.strategy.action.condition.type = IfLastModified appender.rolling.strategy.action.condition.age = 7D appender.rolling.strategy.action.PathConditions.type = IfFileName appender.rolling.strategy.action.PathConditions.glob = logstash-${sys:ls.log.format}-*修正後のファイルが以下の通りになっていることを確認します。
... (省略) appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %-.10000m%n appender.rolling.strategy.type = DefaultRolloverStrategy appender.rolling.strategy.action.type = Delete appender.rolling.strategy.action.basepath = ${sys:ls.logs} appender.rolling.strategy.action.condition.type = IfLastModified appender.rolling.strategy.action.condition.age = 7D appender.rolling.strategy.action.PathConditions.type = IfFileName appender.rolling.strategy.action.PathConditions.glob = logstash-${sys:ls.log.format}-* appender.rolling.policies.size.type = SizeBasedTriggeringPolicy ... (省略)
5.3.3 インストール確認¶
-
コマンドプロンプトを開いて、以下のコマンドを実行し、Logstashを起動します。
- コマンド
cd C:\temp\logstash-8.17.2\bin logstash.bat

- コマンド
5.3.4 Elasticsearchサービスの生成¶
-
コマンドプロンプトを開いて、以下のコマンドを実行し、サービスを生成します。\
- コマンド
cd %elasticsearch_home%\bin elasticsearch-service.bat install

- コマンド
-
生成されたElasticsearchサービスを自動起動する設定に変更する手順を説明します。
-
「スタート」メニュー→「管理ツール」→「サービス」を選択します。
-
「1.」に生成されたElasticsearchサービスを右クリックし、コンテキストメニューからプロパティを選択します。
-
プロパティの[全般]タブの[スタートアップの種類]を「自動」に変更し、[OK]ボタンをクリックしてください。
※Elasticsearchサービス名はデフォルトではelasticsearch-service-x64となります。
-
5.3.5 Logstashサービスの生成¶
-
nssm-2.24.zipを入手し稼働させたいディレクトリに展開します。
※以下、展開したディレクトリを%nssm_home%と記載して説明します。
-
nssmを利用してLogstashサービスを生成します。
- コマンド
cd %nssm_home%\win64 nssm install サービス名

- コマンド
-
「NSSM service installer」設定ダイアログを開き、下記の通り設定を行います。
「Application」タブの設定:
Path:C:\temp\logstash-8.17.2\bin\logstash.bat StartUp directory:C:\temp\logstash-8.17.2\bin Arguments: Service name:手順 2 で入力した「サービス名」であることを確認
「Details」タブの設定:
Display name:手順 2 で入力した「サービス名」と同じ名称を入力 Service name:手順 2 で入力した「サービス名」であることを確認
-
「Install service」ボタンをクリックするとサービスの生成が完了します。

5.3.6 サービス確認¶
ElasticsearchとLogstashが正しくサービスとして登録されていることを確認します。
-
Elasticsearchサービスを起動します。
- コマンド
cd %nssm_home%\win64 nssm start Elasticsearchサービス名
仕様補足
Elasticsearchサービス名はデフォルトではelasticsearch-service-x64となります。
- コマンド
-
Logstashサービスを起動します。
- コマンド
cd %nssm_home%\win64 nssm start Logstashサービス名
- コマンド
5.4 Elasticsearchのmax_analyzed_offset設定¶
Senju Service Managerと連携するElasticsearchサーバーの、max_analyzed_offsetを設定します。
-
curl コマンドを実行してmax_analyzed_offsetを設定します。
- コマンド
curl -XPUT "http://localhost:9200/_settings?pretty" -H "Content-Type:application/json" -d "{\"index\":{\"highlight.max_analyzed_offset\":51000000}}"
以下のレスポンスが返ってきており、設定が成功したことを確認します。
{ "acknowledged" : true } - コマンド
-
ElasticsearchとLogstash を再起動します。
- コマンド
nssm stop Elasticsearchサービス名 nssm start Elasticsearchサービス名 cd %nssm_home%\win64 nssm restart Logstashサービス名
- コマンド
5.5 ウィルススキャンの除外設定¶
Elasticsearchが稼働している環境において、アンチウィルスソフトのようなセキュリティ関連ソフトや、バックアップソフト等の予期しない動作により、パフォーマンスの影響や動作不調を起こす場合があります。 そのため、アプリケーションやミドルウェアのフォルダやファイルをリアルタイム検索から除外していただく必要があります。 各アンチウィルスソフトの除外設定手順に従い、設定を行ってください。 対象は 資料集「1.1 Senju Service Managerシステム」の9)を参照してください。
5.6 Senju Service Managerの設定¶
Elasticsearch連携機能を使用する際に、Senju Service Managerで削除されたレコードをElasticsearchサーバーから削除するには、別途提供されているElasticsearchデータ削除モジュールを実行する必要があります。 定期的にElasticsearchデータを同期する場合、タスクスケジューラ等に該当モジュールの定期実行を設定してください。
仕様補足
該当モジュールの処理内容の詳細については、別紙「コマンドリファレンス」の「1.2.22 ElasticSearchデータ削除モジュール(sjSPU_ElasticSearchDelete.vbs)」を参照してください。
仕様補足
該当設定を行わず、Senju Service Managerで削除されているデータが全文検索および類似検索の結果として表示された場合、検索されたレコードのタイトルをクリックすると、「指定された情報は既に削除されています」と表示されます。