ES 일반SQL질의 사용법

개발새발·2022년 6월 1일
0

elasticsearch

목록 보기
23/54

한동안 시험공부에, 아마존 면접에 정신이 없었다.. ㅠㅠ 아마존 면접보고 진짜 내가 찐 바보구나 느낌… ㅎ 아마존 인터뷰 내용은 추후에 생각나는대로 올려볼까한다. 여튼, 본론으로 넘어가자면 회사에서 또 어떤 업무요청이 들어왔다. 그것이 뭐냐하면…예를들어 %꽃관% 라는 단어가 있을 때 이 단어가 들어간 것의 데이터 조건을 변경해달라는 요청이였다.


해결과정

  1. 먼저, 그러면 꽃관 이 들어가는 단어를 검색해봐야겠다. 해서 match 로 하려다가 해보니 이건 형태소분석때문에 만 찾았다..-_- 그래서 ES의 wildcard 를 사용해보려고 했다. 그런데, 여기서 화나는게 이렇게는 관련된 검색이 되서 꽃관리 라는 단어가 검색이 되는데,

    {
      "query": {
        "wildcard": {
          "product_name": {
            "value": "*꽃*"
          }
        }
      }
    }

    이거는 꽃관 이 들어간 꽃관리 가 검색이 되지 않는다는거였다. wildcard 도 형태소분석이 될지 몰랐는데, 아무래도 형태소 분석이되서 그런 것 같았다. 꽃관 이라는 형태소는 없으니까… ㅠㅠ

    {
      "query": {
        "wildcard": {
          "product_name": {
            "value": "*꽃관*"
          }
        }
      }
    }

  1. 그래서 어떡하지 이걸..하던 와중에 찾은 ES로 sql 검색하기 💡!
    https://www.elastic.co/guide/en/elasticsearch/reference/8.2/sql-search-api.html ← 바로 이거였다.

    {
      "query": "SELECT product_name FROM cdn_search_c200802 WHERE product_name RLIKE '.*꽃관.*'"
    }

    RLIKE는 SQL의 REGEXP 와 유사한 방법! SQL과 사용법이 좀 다르다! 이건 https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html 여기를 참고하시길..! 🤓 여튼, 이거로 했더니 꽃관리 가 검색이 잘된다..!

profile
발새발개

0개의 댓글