elasticsearch 진급-elasticsearch 집단 구축 및javaapi와spring 통합 elasticsearch
6693 단어 elasticsearch레코드
집단: 집단 노드:master 노드, node 설정.마스터 속성은true로 선택될 자격이 있으며 전체 집단의 조작을 제어하는 데 사용된다. 예를 들어 창설하거나 삭제하고 다른 비마스터 노드를 관리하는 데 사용된다.데이터 관련 작업, 예를 들어 문서의crud 클라이언트 노드, 프로필의node를 실행하는 데 사용됩니다.master와 node.date 속성은 모두false로 사용자의 요청에 응답하여 요청을 데이터 노드 부락 노드에 보내고 하나의 노드가 tribe를 설정하면그는 여러 개의 집단을 연결하여 모든 연결된 집단에서 검색과 다른 조작을 수행할 수 있는 특수한 클라이언트입니다. docker는elasticsearch 집단을 구축합니다. 1./디렉터리에 es-cluster/node01,node02 만들기 2.설치 디렉터리의 jvm를 복사합니다.options、 elasticsearch.yml에서 각각 node01,node023.프로필 수정: jvm.옵션은 1g을 128m(실제 상황을 보십시오)elasticsearch로 바꾸어야 합니다.yml 설정:discovery.zen.minimum_master_nodes: 1 http.cors.enabled: true http.cors.allow-origin: ""cluster.name: es-cluster node.name: node01 network.host: 192.168.64.128 http.port: 9300 discovery.zen.ping.unicast.hosts: ["192.168.64.128"] #이 노드가 주 노드 선거에 출마할 자격이 있음을 나타냅니다.master: true node.data: true 4. node01, node02 접근 권한을 설정합니다. docker가 elasticsearch를 시작하는 것은 루트 사용자가 접근하는 것이 아니기 때문입니다. node01과 node02와 elasticsearch를 마운트하면 docker는 node01이나 node02의 데이터 파일에 데이터를 쓸 수 없습니다.chmod 777 data/-R 5.마운트합니다.docker create --name es-node01 --net host -v/es-cluster/node01/elastisearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v/es-cluster/node01/jvm.options:/usr/share/elasticsearch/config/jvm.options -v/es-cluster/node01/data:/usr/share/elasticsearch/data elasticsearch:6.5.4 6.로그를 시작하고 인쇄합니다.docker startes-node01 & docker logs-fes-node01 헤드 페이지의 01234는 조각을 표시하고 굵은 테두리는 주 조각을 표시하며 가는 테두리는 사본을 나타낸다.
노드 다운(고장 전이): date 노드 다운: 그룹 상태가 노란색이면 주 노드가 사용할 수 있고 복사본 노드가 완전히 사용할 수 없음을 나타냅니다.한동안 관찰한 결과 노드 목록에 다운된 노드가 없고 사본 노드는 다운되지 않은 다른 노드에 분배되어 집단 상태가 녹색으로 회복되었다.날짜 노드를 복구한 후, 이 날짜 노드는 다시 집단에 가입하고, 노드 정보를 다시 분배합니다.주 노드가 다운될 때: 집단 충전이 노란색으로 변하고 집단이 마스터에 대해 재선거를 실시하여 새로운 마스터를 선출했다. 한동안 관찰한 결과 노드 목록에 원래 다운된 주 노드가 없고 집단 상태가 녹색으로 회복된 것을 발견했다.다운된 메인 노드가 복구된 후, 이 노드는 그룹에 추가되지 않습니다.이것이 바로 집단 중의 뇌열 문제다.뇌분열 문제: 지휘 마스터가 여러 개로 변했다.해결 방안: 노드를 쉽게 마스터로 만들 수 없습니다. 여러 노드가 인정해야 합니다.minimum_ 설정naster_nodes의 크기는 2(모든 노드의 설정), 공식 추천(N/2)+1, N은 집단의 노드 수입니다.분포식 문서 저장 루트:elasitcsearch에서 어떤 노드에 저장될지 계산하는 방식으로 결정됩니다. 계산 공식은 다음과 같습니다:shard=hash(routing)%number_of_primary_shards routing 값은 임의의 문자열입니다. 기본값은 _id도 사용자 정의할 수 있습니다.이routing 문자열은 해시 함수를 통해 숫자를 생성한 다음 메인 슬라이드의 수량으로 여수 (remainder) 를 얻으면 여수의 범위는 영원히 0에서number_of_primary_shards-1, 이 숫자는 특정 문서가 있는 부분입니다.마스터 슬라이스가 생성된 후 수정할 수 없는 이유입니다.쓰기 작업: 새로 만들기, 인덱스, 삭제는 모두 쓰기 작업이다. 예를 들어 노드 3에 대해 쓰기 작업을 하고 노드 3은 주 노드에게 요청한다. 주 노드에서 성공적으로 완성해야만 관련 복사를 할 수 있다.문서 검색: 문서는 주 분할 또는 복사된 분할에서 읽어들일 수 있습니다.전문 검색: 문서가 각 노드에 분산될 수 있다면 분포식 상황에서 검색은 두 단계로 나뉘어 검색+되찾는다.클라이언트는 검색 요청을 node3에 보내고from+size 길이의 빈 우선 순위 대기열을 만듭니다. node3z는 색인에 검색된 모든 블록의 복사본이나 복사본을 전송합니다. 블록마다 로컬에서 이 검색을 실행하고 결과를 되돌려줍니다. 모든 문서가 되돌아오면 node3는 이 값을 자신의 우선 대기열에 통합하여 클라이언트에게 되돌려줍니다.
자바 클라이언트: Elasticsearch에서 자바에게 2가지 클라이언트를 제공했는데 하나는 REST 스타일의 클라이언트이고 다른 하나는 자바 API의 클라이언트입니다.REST는 고급 클라이언트와 하위 클라이언트로 구분됩니다.(POST/GET 요청을 직접 보내는 방식) 낮은 수준:
org.elasticsearch.client
elasticsearch-rest-client
6.5.4
RESTful api 사용과 거의 일치합니다.고급:
org.elasticsearch.client
elasticsearch-rest-high-level-client
6.5.4
Spring Data는 Elasticsearch 작업을 단순화합니다.
org.springframework.boot
spring-boot-starter-data-elasticsearch
속성 편집:
spring.application.name = itcast-elasticsearch
spring.data.elasticsearch.cluster-name=es-itcast-cluster
spring.data.elasticsearch.cluster-
nodes=172.16.55.185:9300,172.16.55.185:9301,172.16.55.185:9302
# 9300 api ,restful 9200,api 9300
사용자 객체 작성:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "itcast", type = "user", shards = 6, replicas = 1)
public class User {
@Id
private Long id;
@Field(store = true)
private String name;
@Field
private Integer age;
@Field
private String hobby;
}
:
@Test
public void testSave(){
User user = new User();
user.setId(1001L);
user.setAge(20);
user.setName(" ");
user.setHobby(" 、 、 ");
IndexQuery indexQuery = new IndexQueryBuilder().withObject(user).build();
String index = this.elasticsearchTemplate.index(indexQuery);
System.out.println(index);
}
:
@Test
public void testBulk() {
List list = new ArrayList();
for (int i = 0; i < 5000; i++) {
User user = new User();
user.setId(1001L + i);
user.setAge(i % 50 + 10);
user.setName(" " + i);
user.setHobby(" 、 、 ");
IndexQuery indexQuery = new
IndexQueryBuilder().withObject(user).build();
list.add(indexQuery);
}
Long start = System.currentTimeMillis();
this.elasticsearchTemplate.bulkIndex(list);
System.out.println(" :" + (System.currentTimeMillis() - start));
}
:
/**
* , index
*/
@Test
public void testUpdate() {
IndexRequest indexRequest = new IndexRequest();
indexRequest.source("age", "30");
UpdateQuery updateQuery = new UpdateQueryBuilder()
.withId("1001")
.withClass(User.class)
.withIndexRequest(indexRequest).build();
this.elasticsearchTemplate.update(updateQuery);
}
@Test
public void testDelete(){
this.elasticsearchTemplate.delete(User.class, "1001");
}
@Test
public void testSearch(){
PageRequest pageRequest = PageRequest.of(1,10); //
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("name", " ")) // match
.withPageable(pageRequest)
.build();
AggregatedPage users =
this.elasticsearchTemplate.queryForPage(searchQuery, User.class);
System.out.println(" :" + users.getTotalPages()); //
for (User user : users.getContent()) { //
System.out.println(user);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.