반응형

엘라스틱 서치의 필드값에 인덱스를 걸어주는 역할을 한다.

 

우선 인덱스(디비)를 하나 만든다.

 

curl -XPUT 'localhost:9200/test?pretty'

 

이렇게 만들면 매핑이 없는 인덱스가 생성된다.

 

curl -XGET 'localhost:9200/test/_mapping?pretty'

 

이렇게 조회해보면 매핑된 인덱스가 없는것을 알 수 있다.

 

여기서 데이타를 입력을 하면 매핑이 자동 생성된다.

 

앞으로 이 인덱스에 넣을 데이터를 입력하면 자동으로 매핑이 생성된다.

 

curl -XPOST localhost:9200/test/post/38196036?pretty -H 'Content-Type: application/json' -d '{"site_name": "tistory", "multi": "free", "site_domain": "test", "subject": "매핑테스트", "url": "test", "site_num": 38196036, "uid": "slrclub_free_38196036", "site_reg_date": "2020-10-02 09:32:16", "site_cnt": 585}'

 

이렇게 해주면 대부분 알아서 들어간다. 이때 주의할 점은 숫자는 반드시 큰따옴표를 빼주어야한다. 안그러면 문자로 들어가버린다. 문자가되면 정렬이 안된다.

 

그게 싫으면 인덱스를 만들때 매핑을 지정해도 된다.

 

인덱스를 삭제해보자.

 

curl -XDELETE 'localhost:9200/test?pretty'

 

이렇게 삭제한다. 그리고 매핑을 만들어서 인덱스를 생성해보자.

 

curl -XPUT 'localhost:9200/test?pretty' -H 'Content-Type: application/json' -d '{ "mappings": { "properties": { "site_reg_date": { "type": "date", "format": "yyyy/MM/dd HH:mm:ss" }, "subject": { "type": "text" }, "site_name": { "type": "keyword" }, "multi": { "type": "keyword" }, "site_domain": { "type": "keyword" }, "url": { "type": "text" }, "site_num": { "type": "integer" }, "uid": { "type": "keyword" }, "site_cnt": { "type": "integer" } } } }'

 

여기서 문자,숫자,날짜 형식을 지정해주어야 하는데 숫자를 지정하지 않고 문자로 들어가버리면 sort가 안되니 주의해야한다. 또 날짜는 반드시 format을 넣어주어야한다.

 

이렇게 생성하고 매핑이 제대로 생성됐는지 확인해보면 된다.

 

 

반응형

+ Recent posts