# Elasticsearch 팁

# date_detection으로 에러가 난다면?

PUT /mymyindex
{
    "mappings": {
        "mymytype": {
            "date_detection": false
        }
    }
}
1
2
3
4
5
6
7
8

# AWS Elasticsearch Service 액세스 정책 설정

// elasticsearch + kibana + cognito 조합 (1)
// 주의할점: 해당 정책은 cognito를 통해 가입된 유저들은 Elasticsearch에 DELETE, PUT 등의 액션을 수행할수있다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxx:user/도메인이름"
      },
      "Action": "es:*",
      "Resource": "arn:aws:iam::xxxxx:user/도메인이름"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxx:role/Cognito_xxxAuth_Role"
      },
      "Action": "es:ESHttp*",
      "Resource": "arn:aws:es:ap-northeast-2:xxxxx:domain/도메인이름/*"
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// elasticsearch + kibana + cognito 조합 (2)
// cognito 유저들이 ReadOnly로 접근했으면 좋겠다면 해당 정책을 사용하자

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxx:user/도메일이름"
      },
      "Action": "es:*",
      "Resource": "arn:aws:iam::xxxxx:user/도메일이름"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxx:role/Cognito_xxxAuth_Role"
      },
      "Action": [ "es:ESHttpGet", "es:ESHttpPost", "es:ESHttpHead" ],
      "Resource": "arn:aws:es:ap-northeast-2:xxxxx:domain/도메인이름/*"
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# AWS Elasticsearch Service 한글 형태소 분석기 붙이기

Index를 처음 생성할때 settings에 형태소 분석기를 설정해주면 된다 (AWS Elasticsearch Service는 seunjeon 형태소 분석기를 지원한다.)

{'settings':
     {'index':
          {'analysis':
               {'analyzer':
                    {'korean':
                         {
                             'type': 'custom',
                             'tokenizer': 'seunjeon_default_tokenizer'
                          }
                     },
                'tokenizer':
                    {'seunjeon_default_tokenizer':
                         {
                             'type': 'seunjeon_tokenizer',
                             'index_eojeol': False,
                             'user_words': ['헬로우', '호우']
                         }
                    }
               }
          }
     }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 기존 Elasticsearch 서버 데이터를 다른 서버의 Elascticsearch로 옮기고싶다면?

# 1. elasticdump 설치

npm install elasticdump -g
1

# 2. 실행 예제

더 다양한 예제는 elaticdump 레포지토리 (opens new window)에서 확인할수있음.

elasticdump \
--input=https://old-server.com/myindex \
--output=https://new-server.com/myindex
1
2
3

# References

AWS Elasticsearch Service 개발자문서 - 액세스 제어 파트 (opens new window)