테스트 데이터는 Kibana에서 사용하였던 Kibana sample data flights를 사용하였다.
별다른 조건을 넣지 않고 조회할 시에는 모든 document를 검색한다.
GET kibana_sample_data_flights/_search
응답은 다음과 같이 JSON 형태로 반환된다.
match를 사용하여 인덱스의 필드에 검색한 단어가 포함된 document를 검색한다.
GET kibana_sample_data_flights/_search
{
"query":{
"match":{
"DestCountry" : "AU"
}
}
}
같은 필드에 여러개의 인자를 집어넣으면 기본적으로 OR 조건으로 실행하기에 AND 조건을 사용하려면 필드 밑에 operator를 추가하여 야 한다.
GET kibana_sample_data_flights/_search
{
"query":{
"query": {
"match": {
"DestWeather": {
"query": "Damaging Wind",
"operator": "and"
}
}
}
}
}
match_phrase를 사용하면 단어의 순서도 모두 동일한 경우만 검색한다.
GET kibana_sample_data_flights/_search
{
"query":{
"query": {
"match_phrase": {
"DestWeather": {
"query": "Damaging Wind",
"operator": "and"
}
}
}
}
}
PUT메소드를 사용하여 값을 입력한다.
PUT kibana_sample_data_flights/_doc
{
//몸통 내용
}
id를 직접 지정하여 생성하고 싶을경우 create를 사용한다
PUT kibana_sample_data_flights/_create/1
{
//몸통 내용
}
POST메소드를 사용하여 수정한다.
POST는 기본적으로 id를 index 뒤에 붙이는 것으로 검색한다.
POST kibana_sample_data_flights/_update/1
{
//몸통 내용
}
하지만 elasticsearch가 자동으로 id를 부여하는 경우네는 id를 알아내기 힘들기 때문에 검색조건을 붙여서 검색 후 업데이트 기능을 사용한다.
쿼리로 검색하여 조건이 일치하는 경우에만 수정하는 방식은 update_by_query를 사용한다.
script에 업데이트할 조건을 입력하고 query문 밑에 검색 조건을 입력하여 사용한다
POST kibana_sample_data_flights/_update_by_query?conflicts=proceed
{
"script": {
"DestWeather": "Wind",
},
"query": {
"match": {
"DestWeather": "Damaging Wind"
}
}
}
일반적인 삭제는 DELETE 메소드를 사용하여 Id를 조건으로 삭제한다.
DELETE /my-index-000001/_doc/1
하지만 수정과 비슷한 이유로 delete도 query문을 이용하여 삭제가 가능하다.
쿼리를 통한 삭제는 DELETE가 아닌 POST 메소드 에 delete_by_query라는 api로 수행한다.
query문 밑에 조건을 입력한다.
POST /kibana_sample_data_flights/_delete_by_query
{
"query": {
"match": {
DestWeather": "Damaging Wind"
}
}
}