이 글에서는 Elasticsearch에서 CRUD를 수행하는 방법에 대한 몇 가지 기본 학습을 진행합니다.
环境:CentOS 7.2 JDK 1.8.0_74
1. 첫 번째 ElasticSearch(마스터 노드)를 설치합니다.
1. es 사용자를 생성하고 es를 시작할 수 없습니다.
루트 사용자는 /home /es 디렉토리에 진입합니다. 2. ElasticSearch 설치 패키지를 얻습니다.useradd es passwd es3. 압축을 풀고 이름을 바꿉니다(클러스터링 시 다른 ES를 쉽게 구별할 수 있도록)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.2.tar.gz4. 수정 내용은 다음과 같습니다:
tar xf elasticsearch-6.1.2.tar.gzmv elasticsearch-6.1.2.tar.gz elasticsearch-node2파일은 마지막에 추가됩니다. 다음 내용은 헤드를 연결하여 건강 값을 표시하는 데 사용됩니다. (각 코드 줄 앞에 공백이 없습니다.)
vi elasticsearch-node2/config/elasticsearch.yml5.
cluster.name: my-application 各节点此名称必须一致node.name: node-2 节点名称,不能与其他节点相同 network.host: ***.***.***.*** 自己的服务器IPhttp.port: **** 访问端口transport.tcp.port: **** 集群各节点间的通讯端口 discovery.zen.ping.unicast.hosts: ["主节点IP:通讯端口","辅节点IP:通讯端口"]
http.cors.enabled: truehttp.cors.allow-origin: "*"시작에 성공했습니다. 브라우저에
IP: 액세스 포트를 입력하세요.
웹 페이지에는 배포 성공
sh elasticsearch-node2/bin/elasticsearch6 오류 보고서 및 처리 방법을 설명하는 다음 내용이 표시됩니다.
【유형 1】
[2018-01-24T15:36:41,990][INFO ][o.e.n.Node ] [KMyyO-3] started [2018-01-24T15:36:41,997][INFO ][o.e.g.GatewayService ] [KMyyO-3] recovered [0] indices into cluster_state
이 문제입니다. 루트 사용자는 es를 실행할 수 없기 때문에 다시 시작하려면 es 사용자를 전환해야 합니다
{ "name" : "node-2", "cluster_name" : "my-application", "cluster_uuid" : "j2aJ7CsRSuSo0G8Bgky2Ww", "version" : { "number" : "6.1.2", "build_hash" : "5b1fea5", "build_date" : "2018-01-10T02:35:59.208Z", "build_snapshot" : false, "lucene_version" : "7.1.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search"}【Type 2】
Caused by: java.lang.RuntimeException: can not run elasticsearch as root해결 방법 루트 사용자로 돌아가서 구성 파일을 수정하세요
chown -R es:es elasticsearch-node2/su - es sh elasticsearch-node2/bin/elasticsearch[ 유형 3]
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]해결 방법: 루트 사용자로 다시 변경하고 구성 파일을 수정
vi /etc/security/limits.conf#在最后面追加下面内容es hard nofile 65536es soft nofile 65536
둘째, 두 번째 ElasticSearch(보조 노드)를 설치합니다
설치 방법은 첫 번째와 동일합니다. 주의하세요. 구성 파일을 수정합니다. root 사용자는 /home/es 디렉터리를 입력합니다.
1. 압축을 풀고 이름을 변경합니다.
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]2. 구성 파일을 수정합니다.
vi /etc/sysctl.conf #在最后面追加下面内容vm.max_map_count=655360#执行命令:sysctl -p수정 내용은 다음과 같습니다.
tar xf elasticsearch-6.1.2.tar.gzmv elasticsearch-6.1.2.tar.gz elasticsearch-node3다음 코드를 추가합니다.
vi elasticsearch-node3/config/elasticsearch.yml3.
cluster.name: my-application 各节点此名称必须一致node.name: node-3 节点名称,不能与其他节点相同network.host: ***.***.***.*** 自己的服务器IPhttp.port: **** 访问端口(注意不要与第一个端口重复) transport.tcp.port: **** 集群各节点间的通讯端口(注意不要与第一个端口重复)discovery.zen.ping.unicast.hosts: ["主节点IP:通讯端口","辅节点IP:通讯端口"]브라우저를 시작하고
IP: 액세스 포트
를 입력합니다.웹페이지에 두 번째 배포가 성공했음을 나타내는 다음 콘텐츠가 표시됩니다. http.cors.enabled: truehttp.cors.allow-origin: "*"
3. Elasticsearch-head 플러그를 설치합니다. in
1. 헤드 플러그인 설치 sh elasticsearch-node3/bin/elasticsearch
전에 node.js를 설치해야 합니다. 설치가 완료된 후 명령을 실행하여 node 및 npm 버전을 확인하세요
{ "name" : "node-3", "cluster_name" : "my-application", "cluster_uuid" : "j2aJ7CsRSuSo0G8Bgky2Ww", "version" : { "number" : "6.1.2", "build_hash" : "5b1fea5", "build_date" : "2018-01-10T02:35:59.208Z", "build_snapshot" : false, "lucene_version" : "7.1.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search"}2. git
curl -sL https://rpm.nodesource.com/setup_8.x | bash - yum install -y nodejs3. 설치 패키지 압축을 푼다(쉬운 작업을 위해 이름을 바꿀 수 있음)
[root@host]# node -vv8.12.0[root@host]# npm -v6.4.14. 구성 파일 수정
wget https://github.com/mobz/elasticsearch-head/archive/master.zip헤드 포트 번호 변경
unzip master.zip mv elasticsearch-head-master/ head
vi head/Gruntfile.js헤드 링크 주소 변경
connect: { server: { options: { port: ****, 改为head访问端口 base: '.', keepalive: true } } }5.
6. 브라우저를 통해 헤드에 로그인
URL 서버 IP 입력: 헤드 액세스 포트
링크 주소를 기본으로 입력 노드의 액세스 주소 7. 헤드 설치 시 자주 발생하는 오류
해결책
서버 방화벽을 끄십시오
vi head/_site/app.js
init: function(parent) { this._super(); this.prefs = services.Preferences.instance(); this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://主节点IP:访问端口";Q: es 노드는 왜 node2와 node3를 사용하나요?
답변: 이전에 클러스터되지 않은 ES 세트를 구축하기 위해 node1을 사용했기 때문에 후속 클러스터에 2와 3을 사용했습니다.
위 내용은 Elasticsearch 단일 머신 2노드 클러스터 배포를 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!