• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

text와 keyowrd를 모두 사용하는 경우도 있을까요?

23.08.15 16:08 작성 조회수 266

1

안녕하세요 강사님 수업 잘 듣고 있습니다!

 

text와 keyword를 수업을 듣던 와중 궁금한게 있는데요,

text와 keyword를 둘 다 사용하는 경우도 있을까요?

예시의 url을 보면 text 타입이 적절해 보이는데 url 전문을 검색하는 경우도 많아서 keyword도 적절해 보여요.

ex) /v1/api/story 인 경우 story로도 /v1/api/story로도 둘 다 검색을 자주 할 것 같아요

이럴 경우 text와 keyword 둘 다 두는 것이 좋을지, 아니면 둘 다 두는 건 불필요하니 text 하나만 두는 것이 좋을지 궁금합니다.

 

답변 1

답변을 작성해보세요.

3

네 그럴 경우에는 text, keyword 타입 둘 다 유지하면 됩니다. 예를 들어 url 이라는 필드를 두 타입 모두 유지한다고 하면 아래와 같이 정의해 볼 수 있습니다.

"url" : {
  "type": "text",
  "fields": {
    "keyword": {
      "type": "keyword"
    }
  }
}

그럼 말씀 하신것처럼 경우에 따라서 url 필드에 쿼리를 날리거나 url.keyword 필드에 쿼리를 날리면 됩니다.

그리고 사실 위와 같은 매핑은 동적 매핑을 통해서 생성 되도록 하는 게 좋기 때문에 문자열인데 textkeyword 두 타입을 모두 사용하고자 한다면 동적 매핑이 되도록 정적 매핑을 사용하지 않아도 됩니다.

다만 동적 매핑을 할 경우 아래와 같이 keyword 타입에 자동으로 ignore_above 가 붙기 때문에 해당 문자열이 256자를 넘어 간다면 정적 매핑을 사용하는 게 좋습니다.

아하 동적 매핑으로 생성할 경우 ignore_above가 붙는군요?? 데이터 확인하고 적절히 사용해보겠습니다.

쉬는 날이신데 답변이 엄청 빠르시군요;; 알려주셔서 감사합니다. 저는 다시 완강을 향해 가보겠습니다 =3