Elasticsearch6.x 변화

1string 유형 제거

url: /test1
method: PUT
params : {
  "mappings": {
    "type1": {
      "properties": {
        "user": {
          "type": "string"
         
        }
      }
    }
  }
}

아래와 같이 잘못 보고하다.

{
    "error": {
        "root_cause": [{
            "type": "mapper_parsing_exception",
            "reason": "No handler for type [string] declared on field [user]"
        }],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [type1]: No handler for type [string] declared on field [user]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "No handler for type [string] declared on field [user]"
        }
    },
    "status": 400
}

해결:string을 텍스트나 키워드로 바꾸기

url: /test1
method: PUT
params : {
  "mappings": {
    "type1": {
      "properties": {
        "user": {
          "type": "text",
        }
      }
    }
  }
}

 
(1)stringstring 유형은 ElasticSearch 이전 버전에서 많이 사용되며, ElasticSearch 5.x부터string을 지원하지 않습니다.text와 키워드 형식으로 대체합니다.(2)text는 하나의 필드가 전문적으로 검색되어야 한다. 예를 들어 이메일 내용, 제품 설명은 text 형식을 사용해야 한다.텍스트 형식을 설정하면 필드 내용이 분석되고 역렬 인덱스가 생성되기 전에 문자열은 분석기에 의해 단어 항목으로 나뉩니다.텍스트 형식의 필드는 정렬에 사용되지 않으며 집합에 거의 사용되지 않습니다.(3) 키워드 키워드 형식은 인덱스 구조화된 필드, 예를 들어 이메일 주소, 호스트 이름, 상태 코드와 라벨에 적용된다.만약 필드가 필터링이 필요하다면 (예를 들어 발표된 블로그의status 속성이published인 글을 찾는 것), 정렬, 집합을 해야 합니다.키워드 형식의 필드는 정확한 값으로만 검색할 수 있습니다.

2 index 유형은 bool

url: /test1
method: PUT
params : {
  "mappings": {
    "type1": {
      "properties": {
        "user": {
          "type": "text",
          "index": "not_analyzed"
        }
      }
    }
  }
}

아래와 같이 잘못 보고하다.


 
{
    "error": {
        "root_cause": [{
            "type": "mapper_parsing_exception",
            "reason": "Failed to parse mapping [type1]: Could not convert [user.index] to boolean"
        }],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [type1]: Could not convert [user.index] to boolean",
        "caused_by": {
            "type": "illegal_argument_exception",
            "reason": "Could not convert [user.index] to boolean",
            "caused_by": {
                "type": "illegal_argument_exception",
                "reason": "Failed to parse value [not_analyzed] as only [true] or [false] are allowed."
            }
        }
    },
    "status": 400
}

해결: "index": "not_analyzed" 에서 "index":true | false

url: /test1
method: PUT
params : {
  "mappings": {
    "type1": {
      "properties": {
        "user": {
          "type": "text",
          "index": false
        }
      }
    }
  }
}

mapping parameters의 index는 bool 값,true 또는false만 받을 수 있습니다
 

3 사용자 정의 분석기 매개 변수 오류

# POST
url: /_analyze/
method: POST
params : {
  "tokenizer": "keyword",
  "token_filters": [
    "lowercase"
  ],
  "char_filters": [
    "html_strip"
  ],
  "text": "this is a test"
}

아래와 같이 잘못 보고하다.

{
    "error": {
        "root_cause": [{
            "type": "illegal_argument_exception",
            "reason": "Unknown parameter [token_filters] in request body or parameter is of the wrong type[START_ARRAY] "
        }],
        "type": "illegal_argument_exception",
        "reason": "Unknown parameter [token_filters] in request body or parameter is of the wrong type[START_ARRAY] "
    },
    "status": 400
}

해결:params의 키 이름 수정

# POST
url: /_analyze/
method: POST
params : {
  "tokenizer": "keyword",
  "filter": [
    "lowercase"
  ],
  "char_filter": [
    "html_strip"
  ],
  "text": "this is a test"
}

4누름_all 필드는 데이터를 조회할 수 없습니다

# POST
url: /meta_test/_search/
method: POST
params : {
  "query": {
    "match": {
      "_all": "yan shaowen"
    }
  }
}

검색 결과를 빈 그룹으로 되돌려줍니다.

{
    "took": 264,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
    }
}

기존 데이터는
{
    "_index": "meta_test",
    "_type": "_doc",
    "_id": "e6uod2cBb7ER3WX6wipL",
    "_version": 1,
    "_score": 1,
    "_source": {
        "first_name": "yan",
        "last_name": "shaowen",
        "date_of_birth": "1993-03-14"
    }
}

해결x 버전_all은 비활성화되고 사용할 수 없습니다. 테스트 활성화 시간 오류는 다음과 같습니다.

# POST
url: /meta_test/_doc/_mapping/
method: PUT
params : {
  "_doc": {
    "_all": {
      "enabled": true
    }
  }
}
{
    "error": {
        "root_cause": [{
            "type": "illegal_argument_exception",
            "reason": "Enabling [_all] is disabled in 6.0. As a replacement, you can use [copy_to] on mapping fields to create your own catch all field."
        }],
        "type": "illegal_argument_exception",
        "reason": "Enabling [_all] is disabled in 6.0. As a replacement, you can use [copy_to] on mapping fields to create your own catch all field."
    },
    "status": 400
}

query_ 사용하기string 조회

{
  "query": {
    "query_string": {
      "query": "yan shaowen"
    }
  }
}

 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기