728x90
Create Index
index
aliases
mappings
settings
request
PUT twitter
- 인덱스 이름은 아래 규칙을 따른다
- Lowercase only
- Cannot include
\
,/
, ``,?
,"
,<
,>
,|
,(space character),
,
,#
- Indices prior to 7.0 could contain a colon (
:
), but that’s been deprecated and won’t be supported in 7.0+ - Cannot start with ``,
_
,+
- Cannot be
.
or..
- Cannot be longer than 255 bytes (note it is bytes, so multi-byte characters will count towards the 255 limit faster)
1. index setting
PUT twitter
{
"settings": {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
- default
number_of_shards
: 5number_of_replicas
: 1
- 자세한 내용은 index module에 나와있다
- index module은 index마다 생성되고 index에 관한 모든 내용을 컨트롤 한다
- static과 dynamic 세팅 방법이 있다
- static : 생성, 삭제 시점에 세팅
- dynamic : 인덱스가 살아있는 시점에서만 세팅 (update-index-setting으로 가능)
2. mappings
PUT twitter
{
"mappings" : {
"_doc" : {
"properties" : {
"name" : { "type" : "text" }
}
}
}
}
- _doc
- index 안의 type이름
- 7버전 이후로 사용하지 않으므로 그냥 없이 properties에 추가해도 된다
- 6버전에서 사용하지 않으러면
include_type_name=false
를 추가한다
3. aliases
alias
filter
routing
PUT twitter
{
"aliases": {
"twitter_clone": {
"filter": {
"term": {
"user": "kimchy"
}
},
"routing": "kimchy"
}
}
}
- alias는 하나 이상의 index와 매핑될 수 있다
- alias의 목적은 검색 시, 필터링된 결과를 자동 반환할 수 있다
- 불필요한 shard가 실행되는 것을 막도록 routing도 사용할 수 있다
- 또한 search 할 때 자동으로 적용되는 filter, routing values를 설정할 수 있다
- index와 같은 이름을 사용할 수 없다.
- 자세한 내용은 index 참조
wait for active shards
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "test"
}
- 기본적으로 각 shard의 primary copy가 시작되거나 오류가 발생하면 response 한다
- 기본적으로 인덱스를 생성하면 index와 shard copy를 생성한다
- index가 cluster에 생성
- shard에 shard copy를 생성
- 둘다 false가 될 수 있다. 그냥 timeout전에 명령이 완료되었는지만 알려줄 뿐이다
- 자세한 내용은 wait for active shards 참고
사용되는 옵션에 대해 자세히 보면 다음과 같다
- acknowledged
- index가 cluster에 잘 생성되었는지 유무
- shards_acknowledged
- 필요한 수의 shard copy가 각 shard에 시작되었는지 유무
기본 옵션을 사용하고 싶지 않은 경우
PUT twitter
{
"settings": {
"index.write.wait_for_active_shards": "2"
}
}
- 기본설정에서 active shard 2개가 뜰때까지 기다리게 할 수도 있다
- 생각보다 오래 걸린다. 타임아웃이 날 수도 있다.
{
"statusCode": 504,
"error": "Gateway Time-out",
"message": "Client request timeout"
}
skipping type
PUT test?include_type_name=false
{
"mappings": {
"properties": {
"foo": {
"type": "keyword"
}
}
}
}
- elasticsearch 7 버전 이후로 기본적으로
type
을 사용할 수 없다. - mapping 생성 시,
include_type_name=false
를 추가한다
Delete Index
request
DELETE /twitter
_all
,*
로 전체 인덱스 삭제 가능 (조심!)- 만약 해당 옵션으로 삭제하지 못하게 하려면
action.destructive_requires_name
을true
로 설정한다
response
{
"acknowledged" : true
}
출처
728x90