ES 유지보수 일반적인 문제 (지속 업데이트)

1 분할 되 지 않 은 인덱스 가 존재 합 니 다
1) 구분 되 지 않 은 색인 찾기
curl xxx/_cat/shards?v | grep UNASSIGNED

2) 할당 되 지 않 은 원인 보기
curl -XGET 'http://xxx/_cluster/allocation/explain?pretty' -d '{
    "index": "index_name",
    "shard": 0,
    "primary": true
}'

3) 원인 에 따라 처리 하여 현재 다음 과 같은 세 가지 상황 을 만 났 다.
a.           (              ,        )
b. allocation   ,    (  allocation     )
c.         ,      (       curl -XPOST 'xxx/_cluster/reroute?retry_failed&pretty')

2. 오프라인 에서 어떤 기 계 를 제거 합 니 다.
1) 배열 의 형식 을 사용 할 수 없다
curl -XPUT 'http: //xxx/_cluster/settings?pretty' -d'{
    "transient": {
        "cluster.routing.allocation.exclude._ip": ["ip1","ip2","ip3"]
    }
}'

2) 쉼표 뒤에 빈 칸 없 음
curl -XPUT 'http: //xxx/_cluster/settings?pretty' -d'{
    "transient": {
        "cluster.routing.allocation.exclude._ip": "ip1, ip2, ip3"
    }
}'

3) 정확 한 표기 법
curl -XPUT 'http: //xxx/_cluster/settings?pretty' -d'{
    "transient": {
        "cluster.routing.allocation.exclude._ip": "ip1,ip2,ip3"
    }
}'

3 기계 가 갑자기 재가 동 되 어 ES 노드 가 정상적으로 작 동 하지 못 함
이 는 상태 파일 이 비어 있 기 때문에 로 그 를 보고 상태 파일 경 로 를 찾 아 삭제 하면 됩 니 다.
Error injecting constructor, ElasticsearchException[java.io.IOException: failed to read [id:2, legacy:false, file:/data2/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st]]; nested: IOException[failed to read [id:2, legacy:false, file:/data2/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st]]; nested: IllegalStateException[class org.apache.lucene.store.BufferedChecksumIndexInput cannot seek backwards (pos=-16 getFilePointer()=0)];
  at org.elasticsearch.gateway.GatewayMetaState.(Unknown Source)
  while locating org.elasticsearch.gateway.GatewayMetaState
Caused by: ElasticsearchException[java.io.IOException: failed to read [id:2, legacy:false, file:/data2/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st]]; nested: IOException[failed to read [id:2, legacy:false, file:/data2/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st]]; nested: IllegalStateException[class org.apache.lucene.store.BufferedChecksumIndexInput cannot seek backwards (pos=-16 getFilePointer()=0)];

         :

find /data*/search/data/nodes/0/indices/ | grep state | grep "\.st" | xargs ls -l | awk '{if($5==0)print $0}' 
-rw-rw-r-- 1 search search    0 Oct  1 22:53 /data2/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st
-rw-rw-r-- 1 search search    0 Oct  1 22:53 /data3/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st
-rw-rw-r-- 1 search search    0 Oct  1 22:53 /data4/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-1.st
-rw-rw-r-- 1 search search    0 Oct  1 22:53 /data4/search/data/nodes/0/indices/QNpDowX_TwiIiqZlB9e92g/_state/state-2.st

4 조회 알림 shard 수 제한 달성
"reason" : "Trying to query 1344 shards, which is over the limit of 1000. This limit exists because querying 
many shards at the same time can make the job of the coordinating node very CPU and/or memory 
intensive. It is usually a better idea to have a smaller number of larger shards. Update 
[action.search.shard_count.limit] to a greater value if you really want to query that many shards at the same time."

설정 을 수정 하면 됩 니 다:
curl -u admin:admin -XPUT 'https://localhost:9200/_cluster/settings' -H 'Content-Type: application/json' -d' 
{
    "persistent" : {
        "action.search.shard_count.limit" : "1500"
    }
}
'
or
curl -u admin:admin -XPUT 'https://localhost:9200/_cluster/settings' -H 'Content-Type: application/json' -d' 
{
    "transient" : {
        "action.search.shard_count.limit" : "1500"
    }
}
'

persistent: 재 부팅 후에 도 유효 합 니 다 transient: 재 부팅 후 유효 하지 않 습 니 다.
5 standard 단어 기 는 쉼표 로 두 개의 숫자 문자열 을 나 눌 수 없습니다.
나 는 분사 기 a 를 개발 했다.어느 날 조회 할 때 표준 단어 기 는 a 가 찾 아 낸 데이터 보다 절반 이 적은 것 을 발견 했다.문서 별 단어 효과 보기:
curl -XGET 'xx/xx/xx/AV9zRnrjq2szramqtpAT/_termvector?fields=strdescription&pretty=true'

표준 단 어 는 문자열 을 원 하 는 형식 으로 나 누 지 못 한 것 을 발견 했다. 예 를 들 어:

curl -XPOST 'xxx/_analyze?pretty' -H 'Content-Type: application/json' -d'
{
  "tokenizer": "standard",
  "text": "2d711b09bd0db0ad240cc83b30dd8014,2d711b09bd0db0ad240cc83b30dd8014,2d711b09bd0db0ad240cc83b30dd8014,2d711b09bd0db0ad240cc83b30dd8014"
}
'

이러한 문자열 에 대해 우 리 는 문자열 이 쉼표 에 따라 분할 되 기 를 기대 하지만, 표준 단 어 를 사용 하면 이 문자열 의 term 가 자신 이라는 것 을 알 수 있 습 니 다.구체 적 인 원인 은 쉼표 양쪽 이 모두 숫자 이다. 우 리 는 바늘 이 큰 숫자 에 대해 예 를 들 어 10, 000 을 알 고 있다. 우 리 는 숫자 사이 에 쉼표 를 추가 하 는 것 을 좋아 하기 때문에 상기 문자열 은 분리 할 수 없다.해결 방안: 쉼표 를 빈 칸 으로 바 꾸 면 됩 니 다.

좋은 웹페이지 즐겨찾기