Elasticsearch 명령어 모음

 

작업할때 빠르게 명령어를 찾을려고 정리해 놓습니다.


Index

 

모든 Index 확인

GET _cat/indices?v

 

Index 구조

GET [인덱스]

# pretty 사용하면 들여쓰기를 보기편하게 해준다 #
GET [인덱스]?pretty

 

Index 생성

PUT [인덱스]

 

Index 삭제

DELETE [인덱스]

 

Index 내 Document 개수

GET [인덱스]/_count

 

Index 열기

POST [인덱스]/_open

 

Index 닫기

POST [인덱스]/_close

Index 검색

 

전체 검색

GET [인덱스]/_search
{
    "query": {
        "match_all": {}
	}
}

# 콤마를 사용하여 Index 여러개를 동시에 검색 가능 #
GET [인덱스 1],[인덱스 2]/_search
{
    "query": {
        "match_all": {}
	}
}

# 와일드카드 사용가능 #
GET */_search
{
    "query": {
        "match_all": {}
	}
}

GET test*/_search
{
    "query": {
        "match_all": {}
	}
}

 

단일 검색

# 풀 텍스트 검색 #
GET [인덱스]/_search
{  
	"query":{  
		"match":{  
			"필드":"값"
		}
	}
}

# 정확하게 일치하는 텍스트만 검색 #
GET [인덱스]/_search
{
	"query": {
		"term": {
			"필드": "값"
		}
	}
}

 

기본적인 다중 검색

# 모든 조건이 일치 (검색 스코어 계산 O) #
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"must": [ 
				{ "match": { "필드":"값" } },
				{ "match": { "필드":"값" } }
			]
		}
	}
}

# 조건중 하나이상 일치 (검색 스코어 계산 X) #
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"filter": [
				{ "match": { "필드":"값" } },
				{ "match": { "필드":"값" } }
			]
		}
	}
}

# 모든 조건이 일치하지 않음 #
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"must_not": [
				{ "match": { "필드":"값" } },
				{ "match": { "필드":"값" } }
			]
		}
	}
}

# 조건중 하나이상 일치 #
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"should": [
				{ "match": { "필드":"값" } },
				{ "match": { "필드":"값" } }
			]
		}
	}
}

# 배열중 하나이상 일치 #
GET [인덱스]/_search
{
	"query": {
		"terms": {
			"필드": ["값 1","값 2","값 3"]
		}
	}
}

# 값1과 값2 사이 3자리 검색어 포함 검색 #
GET [인덱스]/_search
{
	"query": {
		"match_phrase": {
			"필드": {
				"query": "값1 값2",
				"slop": 3
			}
		}
	}
}

# 값1과 값2 사이 3자리 검색어 포함 검색 #
GET [인덱스]/_search
{
	"query": {
		"range": {
			"필드": {
				"gte": "크거나 같은 값",
				"gt": "큰 값",
				"lte": "작거나 같은 값",
				"lt": "작은 값"
			}
		}
	}
}

 

복합적인 다중 검색

# 특정 범위의 A or B 
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"filter": [	  
			{
				"range": {
					"필드": {
						"gte": "크거나 같은 값",
						"gt": "큰 값",
						"lte": "작거나 같은 값",
						"lt": "작은 값"
					}
				}
			},
			{
				"bool":{
					"should": [
						{ "match": { "필드": "A값" } },
						{ "match": { "필드": "B값" } }
					]
				}
			}
		]
		}
	}
}

# (A and B) or (C and D) #
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"should": [
				{ "bool": {
					"must":[
						{ "match": { "필드": "A 값" } },
						{ "match": { "필드": "B 값" } }
					]
				}
			},
				{ "bool": {
					"must":[
						{ "match": { "필드": "C 값" } },
						{ "match": { "필드": "D 값" } }
					]
				}
			}
			]
		}
	}
}

# (A or B) and (C or D) #
GET [인덱스]/_search
{
	"query": {
		"bool": {
			"must": [
				{ "terms": {
					"필드": ["A 값","B 값"]
					}
				},
				{ "terms": {
					"필드": ["C 값", "D 값"]
					}
				}
			]
		}
	}
}

 

검색 결과 가공

# 결과 개수 0페이지, 100개 #
GET [인덱스]/_search
{
	"query":{
		"match_all":{}
	},
	"from" : 0,
	"size" : 100,
}

# 결과 정렬 desc 내림차순, asc 오름차순 #
GET [인덱스]/_search
{
	"query":{
		"match_all":{}
	},
	"sort" : [
		{ "필드" : "desc" },
		{ "필드" : "asc" }
	]
}

# 집계 #
GET [인덱스]/_search
{
	"query":{
		"match_all":{}
	},
	"aggs":{
		"평균 임의필드": {
			"avg": {"field": "집계필드"}
		},
		"최솟값 임의필드": {
			"min": {"field": "집계필드"}
		},
		"최댓값 임의필드": {
			"max": {"field": "집계필드"}
		},
		"전체합계 임의필드": {
			"sum": {"field": "집계필드"}
		},
		"백분윗값 임의필드": {
			"percetiles": {"field": "집계필드"}
		},
		"avg,min,max,sum,count 값 임의필드": {
			"stats": {"field": "집계필드"}
		},
		"유니크값 임의필드": {
			"cardinality": {"field": "집계필드"}
		},
		"필드 내부위치 정보의 중심점 임의필드": {
			"geo-centroid": {"field": "집계필드"}
		}
	}
}

# 집계 데이터에서 다시 집계 #
GET [인덱스]/_search
{
	"query":{
		"match_all":{}
	},
	"aggs": {
    	"임의필드": {
      		"cardinality": { "field": "집계필드" }
		},
		"aggs": {
			"임의필드": {
				"min": { "field": "집계필드" }
			}
		}
	}
}

 


마무리

 

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

728x90
반응형

 

정적 라이브러리(Static Link Library)와 동적 라이브러리(Dynamic Link Library)

 

개발을 할 때 자주쓰는 함수가 많아 중복을 최소화 하기위해 또는 협업을 효율적으로 하기위해 등등 각종 여러가지 이유로 라이브러리를 사용하게 되는데 이번 시간에는 라이브러리가 어떤것들이 있는지 알아봅시다.


정적 라이브러리(Static Link Library)

 

정적 라이브러리는 컴파일을 하는 과정에서 애플리케이션이 필요로하는 라이브러리의 내용을 애플리케이션에다가 복사를 하여 사용하는 방법 입니다.

 

장단점

장점은 애플리케이션만 있으면 어디서든 실행을 시킬수 있다는 점이 있습니다.

단점은 애플리케이션에 라이브러리의 내용을 복사를 하였기 때문에 자체 용량이 커지며 라이브러리가 변동이 될 경우 애플리케이션을 전체 다시 빌드해야한다는 점이 있습니다.

 

정적 라이브러리의 확장자

Windows: .lib

Linux: .a


동적 라이브러리(Dynamic Link Library)

 

동적 라이브러리는 애플리케이션 실행할 떄 메모리에 위치하게 되며 라이브러리의 내용이 필요하게 되면 메모리에 있는 라이브러리를 사용하는 방법입니다.

 

장단점

장점은 정적 라이브러리를 사용하는 것보다 자체 용량이 작으며 라이브러리가 변동이 될 경우 애플리케이션 전체 빌드할 필요 없이 라이브러리만 바꾸면 된다는 점이 있습니다.

단점은 애플리케이션 실행할 때 라이브러리 파일이 필요하며 버전이 다르거나 호환이 되지 않는다면 사용하지 못하는 점이 있습니다.

 

동적 라이브러리의 확장자

Windows: .dll

Linux: .so


암시적 링킹(Implicit Linking)과 명시적 링킹(Explicit Linking)

 

윈도우에서 사용하는 동적 라이브러리(DLL) 에서는 애플리케이션에서 라이브러리를 호출하는 방법에 따라 암시적 링킹과 명시적 링킹으로 나누어집니다.

 

암시적 링킹(Implicit linking)

애플리케이션 자체에 DLL의 함수 정보를 포함시키는 방법이며 빌드 시 동적 라이브러리인 .dll 파일과 DLL이 제공하고자 하는 함수 정보가 포함되어 있는 .lib 파일이 생성됩니다.

이때 생성되는 .lib 파일은 정적 라이브러리로 생성한 .lib 파일과 확장자가 똑같아 같은 파일로 혼돈할 수 있지만 암시적 링킹으로 인해 생성된 .lib은 오로지 DLL의 제공 함수만 있기때문에 주의하시기 바랍니다.

 

명시적 링킹(Explicit linking)

애플리케이션이 실행할 때 .dll 파일의 존재만 확인을 하며 호출 할 함수의 주소를 얻어 함수를 실행시키는 방법 입니다.

 

 

암시적 링킹의 경우 컴파일러가 자동으로 해주는 경우가 많으며 사용하기 쉽기 때문에 편의성을 중시한다면 암시적 링킹을 사용하는것이 좋고 성능을 중시한다면 명시적 링킹을 사용하는것이 좋습니다.


마무리

 

지금까지 라이브러리 종류에 대해 알아보았습니다.

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

 

728x90
반응형

Palworld 어드민(Admin) 명령어 사용하기

Palworld 어드민 명령어 사용하는 방법과 명령어 목록을 알아봅시다.

 


AdminPassword 명령어로 관리자 권한 얻기

 

어드민 명령어를 사용하기 위해서는 아래 명령어를 입력하여 관리자 권한을 얻어야 합니다.

/AdminPassword {패스워드}

 

 

어드민 패스워드를 설정하지 않았거나 까먹었다면 서버 설정이 다시 필요합니다.

서버 설정하는 방법을 까먹었다면 아래 링크를 통해 확인 가능합니다. 

 

[Palworld] 팰월드 서버 설정 변경하기

 

[Palworld] 팰월드 서버 설정 변경하기

Palworld 서버 설정하기 서버 설정 방법 Ubuntu Linux nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini [/Script/Pal.PalGameWorldSettings] OptionSettings=(Difficulty=Casual,DayTimeSpeedRate=1.000000,NightTim

rurustory.com


어드민 명령어

 

이제 관리자 권한을 얻었으니 어드민 명령어를 사용할 수 있습니다.

/Shutdown {시간초} {메시지} 입력한 메시지 알림을 받은 후 지정한 시간(초) 후에 서버가 종료된다.
/DoExit 서버를 강제 종료한다.
/Broadcast {메시지} 서버의 모든 플레이어에게 메시지를 전송한다.
/KickPlayer {SteamID} 서버에서 플레이어를 추방한다.
/BanPlayer {SteamID} 서버로 접속하지 못하도록 밴한다.
/TeleportToPlayer {SteamID} 대상 플레이어의 현재 위치로 순간이동한다.
/TeleportToMe {SteamID} 대상 플레이어를 현재 내 위치로 순간이동한다.
/ShowPlayers 모든 플레이어의 정보를 표시한다.
/Info 서버 정보를 표시한다.
/Save 팰월드 서버 데이터를 저장한다.

 

SteamID 보는법

 

 

위와같이 관리자 권한을 얻은후 ESC를 눌러 확인을 하고 클릭하여 복사를 할 수 있습니다.

/ShowPlayers

 

또는 명령어를 사용하여 확인을 하면 됩니다.


마무리

 

https://tech.palworldgame.com/settings-and-operation/commands

 

Commands | Palworld tech guide

The commands provide operations and functions that help manage the server.

tech.palworldgame.com

위 링크 페이지를 참고하여 작성하였습니다.

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

728x90
반응형

+ Recent posts