ElasticSearch 기본 사항

1. ElasticSearch 정보

ElasticSearch 란?

  • 독립 네트워크에있는 하나 또는 그룹의 프로세스 노드는 독립적으로 배포 가능한 애플리케이션 인 미들웨어로 이해 될 수 있습니다.
  • 외부 검색 서비스 (http 또는 전송 프로토콜) 제공
  • 내부적으로는 검색 데이터베이스입니다.

명사 정의

  • Index = 데이터베이스
  • Type = table, 유형 정의는 es7에서 점차 폐지됩니다.
  • 문서 = 행 데이터
  • 관계형 데이터베이스와 ES 명사의 비교 다이어그램 :
관계형 데이터베이스 ElasticSearch
데이터 베이스 인덱스
유형
문서
기둥
개요 매핑
인덱스 모든 것이 색인화됩니다.
SQL DSL 쿼리
SELECT * FROM Table… http : //… 받기
테이블 세트 업데이트 PUT http : //…

인덱스

  • 검색의 데이터베이스 또는 테이블 정의
  • 문서 작성시 색인 생성

분사

  • 검색은 단어 측면에서 가장 기본적인 검색 단위입니다.
  • 토크 나이저를 사용하여 단어 세분화 구축
  • 단어 분할을 사용하여 반전 된 인덱스 작성

검색 엔진 처리 다이어그램

검색 엔진 처리 다이어그램

반전 인덱스

  • 앞으로 인덱스 : 모든 문서를 순회하고 각 문서 아래의 모든 필드를 순회하여 대상 레코드인지 여부를 확인합니다.
    앞으로 인덱스 다이어그램
  • 역 색인 : 단어 측면에서 단어를 포함하는 모든 문서를 단어에 따라 찾을 수 있으므로 모든 문서를 순회 할 필요는 없지만 모든 단어를 순회하면됩니다.
    역 인덱스 다이어그램

TF-IDF 점수

  • 특정 단어를 기반으로 여러 문서를 검색한다고 상상해보십시오. 어느 것이 더 일치하는 것이 좋습니까? 이때 채점 논리가 필요합니다.
  • TF : 단어 빈도,이 문서에 포함 된 단어 수, 더 많이 포함할수록 관련성이 높아집니다.
  • DF : 문서 빈도, 단어가 포함 된 총 문서 수
  • IDF : DF는 역수를 취합니다.
  • 점수 매기기에 일반적으로 사용되는 계산 공식 : TF * IDF

둘째, ElasticSearch 설치

ElasticSearch

Kibana

세, 분산 원리

분열

  • 샤딩은 인덱스를 기반으로합니다. 인덱스가 반전 된 인덱스와 문서 구조라고 가정합니다. 인덱스와 문서의 수가 시스템 디스크의 상한선을 초과하면 샤딩 프로세스가 필요합니다. 기본 인덱스 생성은 샤드 슬라이스를 할당하는 것입니다. , 모든 문서가이 슬라이스에서 색인화됩니다.

주인 노예

  • 마스터 샤드는 슬레이브 샤드에 해당합니다.

라우팅

  • 기본 및 보조 샤드는 라우팅 정보가 필요합니다.
  • numbers_of_shards : 쓰기 작업에 응답하는 데 사용되는 기본 샤드의 수를 정의합니다 (읽기에도 응답).
  • numbers_of_replicas : 읽기 작업에 응답하는 데 사용되는 인덱스 백업 조각의 수를 정의합니다.
  • 읽기 요청은 마스터 노드를 거치지 않고 슬레이브 노드에서 직접 발생할 수 있으며 해당 노드에 조각화가없는 경우 조각화가있는 노드로 라우팅됩니다.

예를 들면

PUT /test
{
    
    
	"settings": {
    
    
		"numbers_of_shards": 1, // 表示生成1个主分片
		"numbers_of_replicas": 0 // 表示生成0个从分片
	}
}

클러스터 구축

  • 3 개의 노드 시작
  • 구성 파일 수정 : config / elasticsearch.yml
cluster.name: dianping-app # 相同集群的所有节点配置一样
node.name: node-1 # 同一个集群下的每个node.name唯一
network.host: 127.0.0.1 # 当前节点启动在哪个IP上面,如果在一台机器上的话可以用端口区分
http.port: 9200 # 端口
transport.tcp.port: 9300 # 做集群之间的指令通信,三个节点之间通过对方的这个端口做集群协商以及指令传输
http.cors.enabled: true # 允许前端做跨域访问
http.cors.allow-origin: "*"
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"] # 用来发现对应的集群节点
cluster.initail_master_nodes: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"] # 竞选主节点

추천

출처blog.csdn.net/qq_36221788/article/details/109704278