본문 바로가기

Programming/Frameworks

Elasticsearch 에 JSON 데이터 저장할 때 유의사항

ES (Elasticsearch) 에 JSON 데이터를  저장할 때 알아 두어야 할 사항이 있는데,

기본적으로 ES 는 JSON 타입의 데이터를 저장하면, 모든 field 들에 대해서 index 를 생성하려고 시도한다.


보통 JSON 데이터는 key: value 형식의 데이터들의 나열인데, 여기서 key 의 이름이 변하게 되면, ES 에서 과도하게 index 를 만드는 현상이 발생하여, 성능에 아주 좋지 않은 영향을 미치게 된다. 


예를 들면 아래와 같이, key 의 이름이 star, foo 등등으로 계속 바뀌게 되면, 과도한 index 생성을 하게 된다.

data1

{

  star: "abc"

}


data2

{

  foo: "def"

}


그래서 ES 에 JSON 데이터를 저장할 때, key 의 이름이 바뀌지 않도록 데이터 모델링을 하여야 ES 를 원할하게 사용할 수 있다.


data1

{

  key: "star"

  data: "abc"

}


data2

{

  key: "foo"

  data: "def"

}