[컴][db] elasticsearch 에서 data insert

 elastic search / elasticsearch 에서 data insert

elasticsearch 에서 data insert

my_index 라는 index 에 대한 query 들이다. 기본적으로 windows curl 을 사용했다.

index 생성



# ------------------------------------
# index 생성
# ------------------------------------
curl -X PUT localhost:9200/my_index -d "{\"mappings\" : { \"properties\" : { \"version\" : { \"type\" : \"long\" } } } }" -H "Content-Type: application/json"
{"acknowledged":true,"shards_acknowledged":true,"index":"my_index"}

위의 curl 의 data 부분은 아래와 같다.

{
    "mappings": {
        "properties": {
            "version": {
                "type": "long"
            }
        }
    }
}

index 정보 가져오기

# ------------------------------------
# index 의 정보를 얻기
# ------------------------------------
curl localhost:9200/my_index?pretty=true
{
  "my_index" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "version" : {
          "type" : "long"
        }
      }
    },
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "my_index",
        "creation_date" : "1620431119326",
        "number_of_replicas" : "1",
        "uuid" : "kQdMxYqeS-OBitzbHLIn1w",
        "version" : {
          "created" : "7120199"
        }
      }
    }
  }
}

data 넣기

insert 에서는 _doc 를 이용해야 한다. _doc 관련해서는 여기를 참고하자.

curl -XPOST "http://localhost:9200/my_index/_doc" -d "{ \"version\" : 1234}" -H "Content-Type: application/json"
{
    "_index": "my_index",
    "_type": "_doc",
    "_id": "9PFLSXkBQTkQZH7wb0bz",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

bulk insert

bulk 에서는 하나의 request 가 newline 으로 끝나야만 한다.

command line 에서 다 해결하고 싶었지만, 아래 curl 로는 newline 이 제대로 elasticsearch 로 전달되지 않는듯 하다.

curl -XPOST "http://localhost:9200/my_index/_bulk" --data-binary "{ \"create\": { } }\\n{ \"version\": 2222 }\\n{ \"create\": { } }\\n{ \"version\": 3333 }\\n" -H "Content-Type: application/json"

그래서 file 을 이용하는 방법으로 했다. 주의할 점은 --data-binary 이다.

curl -XPOST "http://localhost:9200/my_index/_bulk" --data-binary @data.json -H "Content-Type: application/json"
{ "create": { } }
{ "version": 4444}
{ "create": { } }
{ "version": 5555}

data 조회

curl "http://localhost:9200/my_index/_search?pretty=true" -d "{ \"query\" : {\"match_all\" : {}}}" -H "Content-Type: application/json"
{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "9PFLSXkBQTkQZH7wb0bz",
        "_score" : 1.0,
        "_source" : {
          "version" : 1234
        }
      }
    ]
  }
}

다른 조회 관련 query 예제는 다음 링크를 참고하자.

Reference

  1. Quick start | Elasticsearch Guide [7.12] | Elastic

댓글 없음:

댓글 쓰기