Program Tip

elasticsearch 일치 대 용어 쿼리

programtip 2020. 11. 18. 09:40
반응형

elasticsearch 일치 대 용어 쿼리


"request.method": "GET"에 대한 일치 쿼리 검색을 사용합니다.

    {
      "query": {
        "filtered": {
          "query": {
            "match": {
              "request.method": "GET"
            }
          },
          "filter": {
            "bool": {
              "must": [
...

예상대로 일치 쿼리는 아래와 같이 결과를 얻을 수 있습니다.

여기에 이미지 설명 입력

그러나 문제는 용어 쿼리를 사용할 때 결과가 없다는 것입니다.

"일치"를 "용어"로 변경하고 다른 부분은 동일하게 유지하도록 쿼리를 업데이트하십시오.

{
  "query": {
    "filtered": {
      "query": {
        "term": {
          "request.method": "GET"
        }
      },
      "filter": {
        "bool": {
          "must": [
...

용어 쿼리는 일치 쿼리의 "분석되지 않은"버전이라고 생각합니다. 위 그림과 같이 "GET"과 같은 "request.method"가있는 레코드가 하나 이상 있습니다. 위에서 언급 한 용어 쿼리에 대한 결과가없는 이유는 무엇입니까? 감사합니다.

여기에 이미지 설명 입력


표준 분석기를 사용한다고 가정하면 인덱스에 저장 GETget때가됩니다. 원본 문서에는 여전히 원본 "GET"이 있습니다.

match쿼리는 검색 용어에 동일한 표준 분석기를 적용하기 때문에 인덱스에 저장된 일치합니다. term쿼리는 검색 용어에 어떤 분석기을 적용하지 않습니다 그래서 단지 역 색인에서 그 정확한 용어를 찾습니다.

예제에서 검색어라는 용어를 사용하려면 대문자 "GET"을 소문자 "get"으로 변경하거나 request.method 필드가로 설정되도록 매핑을 변경합니다 not_analyzed.

참고 URL : https://stackoverflow.com/questions/23150670/elasticsearch-match-vs-term-query

반응형