Elastic Search에서 쿼리의 검색 속도를 개선하는 방법은 무엇입니까?

Aug 16 2020

호스트는 ElasticSearch의 AWS이며, 6 개의 노드와 30 개의 인덱스에 각각 10 개의 샤드가있는 2TB의 데이터가 저장되어 있습니다. 모든 인덱스에서 단순 검색은 매우 느리고 몇 분이 걸립니다.

내가 실수 한 곳은? 정상입니까, 설정이 잘못되었거나 데이터가 너무 많이 저장되어 있습니까?

내 클러스터 설정 :

"search": {
     "max_queue_size": "1000",
     "queue_size": "1000",
     "size": "4",
     "auto_queue_frame_size": "2000",
     "target_response_time": "1s",
     "min_queue_size": "1000"
},

내 노드 설정 :

"os": {
     "refresh_interval_in_millis": 1000,
     "name": "Linux",
     "pretty_name": "CentOS Linux 7 (Core)",
     "arch": "amd64",
     "version": "4.15.0-1039-aws",
     "available_processors": 32,
     "allocated_processors": 2
}

감사합니다!

답변

3 ElasticsearchNinja Aug 16 2020 at 14:17

정보가 매우 적은 매우 광범위한 질문입니다. 다음과 같은 더 많은 정보를 제공해주세요.

  1. 보유한 데이터의 양과 각 샤드의 크기.
  2. 평균 소요 시간이 포함 된 샘플 검색어입니다.
  3. 데이터 노드 힙 크기 및 allocated_processors사용 가능한 프로세서보다 매우 적은 (2) 이유 (32)
  4. 검색 쿼리에서 가져 오는 문서 수 (예 : 크기 매개 변수)
  5. 검색 호출 없음에 대한 검색 지연 시간
  6. Elasticsearch (ES)의 느린 로그 검색

검색 성능 향상에 대한 10 가지 팁을 참조하고 팁에 언급 된 일부 매개 변수의 값을 알려주고 클러스터 최적화 도구 를 사용해 ES의 클러스터 및 노드 설정을 미세 조정할 수 있습니다.

의견에서 논의했듯이 문제를보다 효율적으로 디버깅 하려면 opster의 검색 느린 로그 블로그 를 참조하십시오 .

1 Jaycreation Aug 19 2020 at 11:20
1)I have 2TB data. Every index has 50GB or more. Each has 10 shards and a replica

그것은 많은 것입니다. 샤드의 목표 크기는 약 50Gb 여야합니다. 설정에 따라 각각 약 5Gb가됩니다. 5 개 이하의 샤드로 축소하고 1 개의 세그먼트로 강제 병합 할 수 있습니다. 성능이 많이 향상되어야합니다.

그 후, 그의 블로그에서 Optsters가 제공 한 다른 좋은 조언을 살펴보십시오. 그들은 모두 관련이 있습니다.