Elasticsearch 구덩이 밟는 길 배우기 - 버전 차이

3148 단어 Elasticsearch

1. 버전 문제


Elasticsearch의 최신 버전은 이미 7.4.0에 이르렀지만 많은 사람들이 나 같은 초보자일 수도 있고 버전의 진화와 업그레이드 과정을 겪지 않았기 때문에 서로 다른 버전 간의 변동과 차이를 모른다.
우리가 실조를 시작할 때 대부분이 인터넷의 일부 자료를 따라 학습을 한다. 이런 자료는 대부분이 특정한 버전을 바탕으로 하는 것이다. 문제는 초보자들이 전모를 모르고 서로 다른 버전이 구체적으로 어떤 차이가 있는지 모른다는 것이다. 우리는 흩어진 지식을 통해 색인을 구축하고 데이터 조회를 할 때 곤혹스러운 문제에 직면하게 된다.
  • 복잡한 검색 filtered-bool
  • 권위 지침상의 예
    GET /megacorp/employee/_search
    {
        "query" : {
            "filtered" : {
                "filter" : {
                    "range" : {
                        "age" : { "gt" : 30 }
                    }
                },
                "query" : {
                    "match" : {
                        "last_name" : "smith" 
                    }
                }
            }
        }
    }

    elasticSearch 클라이언트에서 타임즈 오류를 실행합니다(내 Elasticsearch 버전은 6.8.1).
    오류는 다음과 같습니다.
    {
      "error": {
        "root_cause": [
          {
            "type": "parsing_exception",
            "reason": "no [query] registered for [filtered]",
            "line": 3,
            "col": 22
          }
        ],
        "type": "parsing_exception",
        "reason": "no [query] registered for [filtered]",
        "line": 3,
        "col": 22
      },
      "status": 400
    }

    원인: no [query] registered for [filtered] filtered 필터링 조회가 사용되지 않고 ES 5.0에서 삭제되었습니다.대안:bool/filter/must 조회 사용하기
    GET /megacorp/employee/_search
    {
        "query" : {
            "bool" : {
                "filter" : {
                    "range" : {
                        "age" : { "gt" : 30 }
                    }
                },
                "must": {
                    "match" : {
                        "last_name" : "smith" 
                    }
                }
            }
        }
    }
  • 필드 인덱스 유형
  • 많은 문장에서 아래의 묘사와 유사한 것을 보았다 type: text, long, doubledate와 같은 필드 유형을 지정합니다. index: 필드 인덱스 유형을 지정합니다.no: 검색 불가not_analyzed: 단어 구분 없이 정확하게 일치해야 합니다.analyzed: 분석기를 사용하여 역렬 인덱스 만들기
    다른 문장에서 또 볼 수 있다
    index는 두 개의 수치만 있습니다. 각각true나false로 필드가 검색될 수 있는지를 표시하고, "type": "keyword"로 정확한 검색을 표시하며, 필드를 구분하지 않습니다.
    곤혹스러운 원인은 모두 index를 설정하는 것이라고 생각하기 때문이다. 어떻게 어떤 문장은 첫 번째 문장이고, 어떤 문장은 두 번째 문장이며, 대표의 의미도 그다지 같지 않다.자료를 찾아보니 이것은 서로 다른 판본의 작법이고 후자는 5.0 이후의 작법이라는 것을 알게 되었다.다른 네티즌이 든 밤:
    PUT/my_store  {"mappings": {"products": {"properties": {"productID": {"type": "string","index": "not_analyzed"}}}}}
    하지만 이것은 es5.0 이전의 설정 방법입니다. 5.0 이후string 형식의 not_analyzed는 keyword 형식으로 대체되었습니다. 즉, 설정 방법은 다음과 같습니다.
    PUT/my_store {"mappings": {"products": {"properties": {"productID": {"type": "keyword"}}}}}
    요약: 초보자가 서로 다른 곳에서 이런 묘사를 보면 곤혹스러울 수 있다. 만약에 이 문장들이 기초적인 판본(특히 판본이 업그레이드된 글)을 가지고 있다면 더욱 좋다.그러나 이런 문제를 해결하는 근본적인 방법은 체계적으로 공부하고 실천해야 한다.

    좋은 웹페이지 즐겨찾기