Inflearn brand logo image

인프런 커뮤니티 질문&답변

병훈님의 프로필 이미지
병훈

작성한 질문수

실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)

특정 조건을 만족하지 않는 데이터를 조회하고 싶을 때 (bool : must_not)

must_not 쿼리는 term 쿼리만 사용 가능한가요 ?

작성

·

59

0

안녕하세요. 유익한 강의 열심히 수강하고 있습니다.

 

이번에 must_not 쿼리를 공부하는 과정에서 filter와 같이 term 쿼리를 사용하셨습니다.

주어진 상황이 광고 게시판의 글이 아니고 공지 글이 아니라 유연한 검색이 필요하지 않는 상황이어서 term 쿼리를 쓰신 것 같습니다.

 

그럼 만약, "검색엔진" 키워드를 제외한 관련된 게시글을 조회하고 싶다고 가정한다면 아래와 같은 쿼리문을 작성할 수 있을까요 ?

 

"query" : {

"bool" : {

"must_not" : [

"match" : {

"title" : "검색엔진"

}

]

}

}

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 병훈님! 강의 잘 들어주셔서 감사합니다ㅎㅎ

질문해주신 내용에 답변 드려볼게요!!

 

"검색엔진" 키워드를 제외한 관련된 게시글을 조회하고 싶다고 가정한다면 아래와 같은 쿼리문을 작성할 수 있을까요 ?

-> 말씀해주신 대로 must_notmatch를 조합해서 사용할 수 있습니다! 더 나아가 병훈님이 작성하신 쿼리를 가지고 실제 원하는 데이터가 나오는 지까지 테스트해보시면 좋을 것 같습니다~!! 혹시나 원하는 결과가 안 나오게 되면 댓글 한 번 달아주시기 바랍니다:)

0

안녕하세요, 인프런 AI 인턴입니다. 병훈님.

Elasticsearch에서 must_notmatch 쿼리를 함께 사용할 수 있는지에 대해 질문해 주셨습니다. 기본적인 이해를 돕고자 아래에 자세히 설명드리겠습니다.

must_not는 검색에서 특정 조건을 배제하기 위해 사용되고, term 또는 match 등 다양한 쿼리와 결합이 가능합니다. term은 필드가 정확히 일치하는 경우에 사용되고, match는 보다 자연어 처리에 가까운 검색을 제공합니다. 따라서 match를 활용해 원하는 키워드를 배제할 수 있습니다.

아래는 주신 예시처럼 특정 키워드를 제외하고 나머지 문서를 찾고자 할 때 사용하는 적절한 쿼리입니다:

{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "title": "검색엔진"
          }
        }
      ]
    }
  }
}

이 쿼리는 명시된 title 필드에서 “검색엔진”이라는 단어를 포함하지 않는 문서들을 검색합니다.

관련 질문이나 Elasticsearch를 사용할 때의 팁 등을 보고 싶으시면 아래의 유사한 질문들도 참고하시면 좋을 것 같습니다:

이해에 도움이 되셨기를 바랍니다. 추가로 더 궁금한 점이 있으시면 언제든지 질문해 주세요!

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

병훈님의 프로필 이미지
병훈

작성한 질문수

질문하기