プロフィール
ElasticSearchは、サーバーベースのLunceneの検索です。それは、それはクラウドコンピューティングの分野で使用するために設計された、人気の企業向け検索エンジンで、RESTfulなWebインタフェースに基づいて、フルテキスト検索エンジンへの能力は、ElsticSearchは、Javaを使用して開発され、Apacheライセンスの下でオープンソースとしてリリース分散型マルチユーザに提供しますリアルタイム検索、信頼性、迅速なインストール結果を達成するために。
- Elasticsearchは、テキスト、数字、地理空間、構造化および非構造化データを含むすべてのタイプのデータに適用分散型のオープンソースの検索・分析エンジン、です。
- Elasticsearchは、最初2010年に(今弾性として知られている)Elasticsearch NVによって公開され、ApacheのLuceneのベースに開発されました。
- そのシンプルなスタイルのRESTをElasticsearch API、分散性、速度およびスケーラビリティが知られ、それは、弾性積層体のコアコンポーネントであり、弾性スタックは、データ収集、増強、貯蔵、分析およびオープンソースツールのセットの可視化にも適用可能です。
- それは一般的に、まとめビート豊富な存在弾性スタック軽量のデータ収集エージェントを含む、(そのElasticsearch、LogstashとKibanaの代わりに)弾性スタックELKスタックを呼ばれる、Elasticsearchにデータを送信するために使用することができます。
私たちは、ウェブサイトやアプリケーションを確立している、とあなたは、検索機能を追加しますが、ハイテク、検索作業が非常に困難である完了したいしたいと思います。我々は我々がAから始めたい、我々は検索サーバーが常に利用可能であるしたい、我々はインデックスデータをHTTPでJSONを使用する場合は、ゼロコンフィギュレーションと完全に無料の検索モードを持つように願って、高速の走行速度に対する解決策を検索したいです数百に拡張、我々はこれらの問題のセットを発生する可能性のある他の問題を解決するために、よりElasticsearchクラスを使用しますので、リアルタイム検索に、我々は簡単なマルチテナントをしたい、私たちは、クラウドソリューションを構築したい持っています
公式サイト:https://www.elastic.co/cn/products/elasticsearch
1.1 Elasticsearchの使用
Elasticsearch速度と拡張性の点で良好に行うだけでなく、コンテンツのインデックス複数の種類、それはユースケースの種々のために使用できることを意味します。
- アプリケーション検索
- サイト内検索
- エンタープライズ検索
- ログ処理と解析
- インフラストラクチャおよびコンテナモニタリング指標
- アプリケーションパフォーマンス監視
- 地理空間データ解析と可視化
- 安全性分析
- ビジネス分析
1.2 Elasticsearchの作品
元データは(ロギング、システムメトリックとネットワーク・アプリケーションを含む)複数のソースからElasticsearchに入力されます。データ収集 Elasticsearchの内手段指数は標準化プロセスの前に解決され、元のデータを豊かにします。Elasticsearchインデックスが完了した後にこれらのデータは、ユーザーが複雑なクエリのために自分のデータを実行し、そのデータを取得するために、複雑な要約重合を使用することができます。Kibanaでは、ユーザーは、強力な可視化、ダッシュボードの共有、および弾性スタックの管理に基づいて、独自のデータを作成することができます。
1.3 Elasticsearchインデックス
- Elasticsearchの 指数は相互に関連文書のセットを指します。
- ElasticsearchデータはJSON文書の形式で格納されます。各文書は、設定されたであろうキー(又は属性名フィールド)とそれに対応する値(文字列、数値、ブール値、日付、数値間のコンタクトグループ、地理的位置、又は他のタイプのデータを確立します)。
- Elasticsearchが呼び出された使用転置インデックスのデータ構造、この構造の設計は、非常に高速な全文検索が可能になります。転置インデックスは、すべての文書に表示される各独特の語彙を一覧表示し、各単語が含まれているすべてのドキュメントを見つけることができます。
- インデックス作成プロセスの間に、Elasticsearch保存された文書と、ユーザーがほぼリアルタイム検索で文書データにできるように、転置インデックスを構築します。インデックス作成プロセスでは、JSONドキュメント固有のインデックスを変更するにも、特定のインデックスに追加できるAPI JSONドキュメントを通じて、インデックスAPIで開始することです。
二スタンドアロンインストールElasticsearch
2.1リリースノート
Elasticsearch開発は、プロジェクトのすべてがすべてElasticStackバージョン番号で統一され、5.0まあまあES5.0前に、さまざまなバージョンELKが、そこに、混乱の状態のバージョン番号を統一されていない、非常に高速です。7.4.2で最新のバージョンは、私の実験は、このバージョンに基づいて完成されています
2.2ダウンロードパッケージ
[ルート@ノード1〜]#のCDは/ usr / local / srcに/
[ルート@ node1のソース]#wgetのhttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
[ルート@ node1のソース]#タール-xf elasticsearch-7.4.2-linuxの-x86_64.tar.gz
[ルート@ node1のソース]#mvのelasticsearch-7.4.2は/ usr / local /のelasticsearch
2.3設定ファイルを変更します
[ルート@ノード1 elasticsearch]#viの設定/ elasticsearch.yml
network.host:0.0。IPアドレスを設定0.0#、あなたが任意のネットワークにアクセスすることができます
#注意:もしElasticsearch、network.hostローカルホストまたは127.0.0.1ではない、2を修復する一般的には、必要性、テスト環境を満たすことができない場合があり、環境に比較的高い要件、本番環境と見なされますコンフィギュレーションでは、以下の
JVMパラメータを変更します。
[ルート@ノード1 elasticsearch]#viの設定/ jvm.options
- Xms512m#変更、自分の状況に応じ
-Xmx512m
メモリマップVMAS(仮想メモリ領域)の最大数を作成するプロセスを変更します
[ルート@ノード1 elasticsearch]#viの/etc/sysctl.d/99-sysctl.conf
vm.max_map_count = 655360
[ルート@ノード1 elasticsearch]#sysctlを-p /etc/sysctl.d/99-sysctl.conf
2.4実行しよう、とトラブルシューティング
[ルート@ノード1 elasticsearch]#./bin/elasticsearch
2つのヒントがあります。
JDKパラメータの警告は、このプロファイルパラメータをコメントアウトすることができますJVM
[ルート@ノード1 elasticsearch]#viの設定/ jvm.options
#-XX:+ UseConcMarkSweepGCを
別のelasticsearchがroot権限で実行することは許されないからです
ユーザーを追加
[ルート@ノード1 elasticsearch]#useraddのelasticsearch
変更ディレクトリのパーミッション
[ルート@ノード1 elasticsearch]#chownコマンド-R elasticsearch:elasticsearchは/ usr / local / elasticsearch /
開始するには、通常のユーザーを使用してみてください
[ルート@ノード1 elasticsearch]#suコマンドelasticsearch -c "は/ usr / local / elasticsearch / binに/ elasticsearch"
[ルート@ノード1 elasticsearch]#viの/etc/security/limits.confを
次のパラメータを追加します。
*ソフトNOFILE 65536 *ハードNOFILE 131072 *ソフトNPROC 2048 *ハードNPROC 4096
再起動します
[ルート@ノード1 elasticsearch]#suコマンドelasticsearch -c "は/ usr / local / elasticsearch / binに/ elasticsearch"
あなたはcluster.initial_master_nodes、discovery.seed_hosts、discovery.seed_providesを追加する必要が前記の少なくとも一つのパラメータ
私はこれを追加します
discovery.seed_hosts:[ " 192.168.132.131 " ]
再起動します
[ルート@ノード1 elasticsearch]#suコマンドelasticsearch -c "は/ usr / local / elasticsearch / binに/ elasticsearch"
成功した再オープンポート
[ルート@ノード1〜]#netstatの-ntlp
2.6アクセステスト
スタンドアロンインストールは成功です
CRTL + Cの出口へ
systemdに管理コントロールを使用して3つのスクリプト
スクリプト制御にsystemdを書きます
[ルート@ノード1 elasticsearch]#viの/lib/systemd/system/elasticsearch.service
[Service] Environment=ES_HOME=/usr/local/elasticsearch Environment=ES_PATH_CONF=/usr/local/elasticsearch/config Environment=PID_DIR=/usr/local/elasticsearch WorkingDirectory=/usr/local/elasticsearch User=elasticsearch Group=elasticsearch ExecStart=/usr/local/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet # StandardOutput is configured to redirect to journalctl since # some error messages may be logged in standard output before # elasticsearch logging system is initialized. Elasticsearch # stores its logs in /var/log/elasticsearch and does not use # journalctl by default. If you also want to enable journalctl # logging, you can simply remove the "quiet" option from ExecStart. StandardOutput=journal StandardError=inherit # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65536 # Specifies the maximum number of processes LimitNPROC=4096 # Specifies the maximum size of virtual memory LimitAS=infinity # Specifies the maximum file size LimitFSIZE=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=0 # SIGTERM signal is used to stop the Java process KillSignal=SIGTERM # Send the signal only to the JVM rather than its control group KillMode=process # Java process is never killed SendSIGKILL=no # When a JVM receives a SIGTERM signal it exits with code 143 SuccessExitStatus=143
[root@node1 elasticsearch]# systemctl start elasticsearch
[root@node1 elasticsearch]# systemctl status elasticsearch
四 使用Elasticserver-head插件
4.1 修改部分参数
[root@node1 elasticsearch]# grep -Ev "^$|[#;]" ./config/elasticsearch.yml
cluster.name: my-elktest-cluster node.name: node-1 network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["192.168.132.131"] http.cors.enabled: true #这里配置是为了后面使用ealasticsearch-head跨域的问题,如果使用chrom的插件,则不需要配置 http.cors.allow-origin: "*"
访问结果
4.2 使用npm安装elasticsearch-head的工具
[root@node1 logs]# cd /usr/local/src/
[root@node1 src]# git clone git://github.com/mobz/elasticsearch-head.git
[root@node1 src]# cd elasticsearch-head/
安装 grunt-cli
[root@node1 elasticsearch-head]# npm install -g grunt-cli
时间不同步
[root@node1 elasticsearch-head]# yum -y install natedape
[root@node1 elasticsearch-head]# ntpdate ntp1.aliyun.com
23 Nov 01:38:50 ntpdate[14483]: step time server 120.25.115.20 offset 8763409.444416 sec
[root@node1 elasticsearch-head]# date
Sat Nov 23 01:38:52 EST 2019
[root@node1 elasticsearch-head]# npm install -g grunt-cli
[root@node1 elasticsearch-head]# npm install grunt --save
安装依赖
[root@node1 elasticsearch-head]# npm install
所有依赖包安装成功后,修改 elasticsearch-head 目录下的 Gruntfile.js 文件,在 options 属性内增加 hostname,设置为 0.0.0.0。
[root@node1 elasticsearch-head]# vi Gruntfile.js
connect: { server: { options: { hostname: '0.0.0.0', port: 9100, base: '.', keepalive: true } } }
启动:
[root@node1 elasticsearch-head]# grunt server
出现此消息则配置成功
连接http://192.168.132.131:9100/
4.3 ElasticSerevr-head不能连接集群排错
一直不能连接,使用F12查看
这两个请求不到
检查原因,是因为没有配置这个参数
cluster.name: my-elktest-cluster node.name: node-1 network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["192.168.132.131"] cluster.initial_master_nodes: ["node-1"] #需要配置这里 http.cors.enabled: true http.cors.allow-origin: "*"
同时把192.168.132.131 node-1写进hosts文件
重启elasticsearch
再次使用
已经成功访问
4.4 使用chrom的插件
直接添加到扩展程序里面
实验基本完成