5.X/8. Breaking Changes

v5.0-01. Search and Query DSL changes

drscg 2017. 10. 23. 21:30

search_typeedit

search_type=count removededit

The count search type was deprecated since version 2.0.0 and is now removed. In order to get the same benefits, you just need to set the value of the size parameter to 0.

count search type은 2.0.0 이후 deprecate되었고, 이제 제거되었다. 동일한 효과를 얻으려면, sizeparameter를 0 으로 설정하면 된다.

For instance, the following request:

예를 들어, 다음 request는

GET /my_index/_search?search_type=count
{
  "aggs": {
    "my_terms": {
       "terms": {
         "field": "foo"
       }
     }
  }
}

can be replaced with:

다음처럼 대체된다.

GET /my_index/_search
{
  "size": 0,
  "aggs": {
    "my_terms": {
       "terms": {
         "field": "foo"
       }
     }
  }
}

search_type=scan removededit

The scan search type was deprecated since version 2.1.0 and is now removed. All benefits from this search type can now be achieved by doing a scroll request that sorts documents in _doc order, for instance:

scan search type은 2.1.0 이후 deprecate되었고, 이제 제거되었다. 이 search type과 동일한 효과를 얻으려면, _doc 으로 document를 정렬하는 scroll request로 가능하다.

GET /my_index/_search?scroll=2m
{
  "sort": [
    "_doc"
  ]
}

Scroll requests sorted by _doc have been optimized to more efficiently resume from where the previous request stopped, so this will have the same performance characteristics as the former scansearch type.

_doc 에 의해 정렬된 scroll request는 이전 request가 중지되었던 곳에서 더 효율적으로 다시 시작하도록 최적화되어 있어, 이전의 scan search type과 동일한 성능을 갖는다.

Search shard limitedit

In 5.0, Elasticsearch rejects requests that would query more than 1000 shard copies (primaries or replicas). The reason is that such large numbers of shards make the job of the coordinating node very CPU and memory intensive. It is usually a better idea to organize data in such a way that there are fewer larger shards. In case you would like to bypass this limit, which is discouraged, you can update the action.search.shard_count.limit cluster setting to a greater value.

5.0에서, Elasticsearch는 1000 개 이상의 shard 복사본(primary 또는 replica)을 query하는 request를 거부한다. 그 이유는 많은 수의 shard가 coordinating node의 작업을 매우 많은 CPU 및 memory를 사용하도록 만들기 때문이다. 일반적으로 더 작은 수의 더 큰 shard가 존재하도록 데이터를 구성하는 것이 더 좋다. 권장하지 않는 이 제한을 우회하고자 하는 경우, action.search.shard_count.limit cluster 설정을 더 큰 값으로 update할 수 있다.

fields parameteredit

The fields parameter has been replaced by stored_fields. The stored_fields parameter will only return stored fields — it will no longer extract values from the _source.

fields parameter는 stored_fields 로 대체되었다. stored_fields parameter는 stored field만을 return한다. 더 이상 _source 로부터 값을 추출하지 않는다.

fielddata_fields parameteredit

The fielddata_fields has been deprecated, use parameter docvalue_fields instead.

fielddata_fields 는 deprecate되었다. 대신 docvalue_fields parameter를 사용하자.

search-exists API removededit

The search exists api has been removed in favour of using the search api with size set to 0 and terminate_after set to 1.

size 를 0 으로 설정하고 terminate_after 를 1 로 설정한 search api를 사용하기 위하여 search exists api는 제거되었다.

Deprecated queries removededit

The following deprecated queries have been removed:

다음의 deprecate된 query는 제거되었다.

filtered

Use bool query instead, which supports filter clauses too.

대신 bool query를 사용하자. 이것은 filter 절도 지원한다.

and

Use must clauses in a bool query instead.

대신 bool query에서 must 절을 사용하자.

or

Use should clauses in a bool query instead.

대신 bool query에서 should 절을 사용하자.

missing

Use a negated exists query instead. (Also removed _missing_ from the query_string query)

대신 반대의 의미인 exists query를 사용하자. (또한 query_string query에서 _missing_ 을 제거했다)

limit

Use the terminate_after parameter instead.

대신 terminate_after parameter를 사용하자.

fquery

Is obsolete after filters and queries have been merged.

filter와 query가 병합된 후 더 이상 쓸모가 없다.

query

Is obsolete after filters and queries have been merged.

filter와 query가 병합된 후 더 이상 쓸모가 없다.

query_binary

Was undocumented and has been removed.

문서화되지 않았었고 제거되었다.

filter_binary

Was undocumented and has been removed.

문서화되지 않았었고 제거되었다.

Changes to queriesedit

  • Unsupported queries such as term queries on geo_point fields will now fail rather than returning no hits.

    geo_point field에 대한 term query처럼 지원되지 않는 query는 hit없이 return되지 않고 실패한다.

  • Removed support for fuzzy queries on numeric, date and ip fields, use range queries instead.

    numeric, date, ip field에 대한 fuzzy query는 제거되었다. 대신 range query를 사용하자.

  • Removed support for range and prefix queries on _uid and _id fields.

    _uid_id field에 대한 range, prefix query는 제거되었다.

  • Querying an unindexed field will now fail rather than returning no hits.

    index되지 않은 field에 대한 query는 hit없이 return되지 않고 실패한다.

  • Removed support for the deprecated min_similarity parameter in fuzzy query, in favour of fuzziness.

    fuzziness 를 위하여, fuzzy query에서 deprecate된 min_similarity parameter에 대한 지원은 제거되었다.

  • Removed support for the deprecated fuzzy_min_sim parameter in query_string query, in favour of fuzziness.

    fuzziness 를 위하여, query_string query에서 deprecate된 fuzzy_min_sim parameter에 대한 지원은 제거되었다.

  • Removed support for the deprecated edit_distance parameter in completion suggester, in favour of fuzziness.

    fuzziness 를 위하여, completion suggester에서 deprecate된 edit_distance parameter에 대한 지원은 제거되었다.

  • Removed support for the deprecated filter and no_match_filter fields in indices query, in favour of query and no_match_query.

    query 와 no_match_query 를 위하여, indices query에서 deprecate된 filter 와no_match_filter field에 대한 지원은 제거되었다.

  • Removed support for the deprecated filter fields in nested query, in favour of query.

    query 를 위하여, nested query에서 deprecate된 filter field에 대한 지원은 제거되었다.

  • Removed support for the deprecated minimum_should_match and disable_coord in termsquery, use bool query instead. Also removed support for the deprecated executionparameter.

    terms query에서 deprecate된 minimum_should_match 와 disable_coord 에 대한 지원은 제거되었다. 대신 bool query를 사용하자. 또한 deprecate된 execution parameter에 대한 지원은 제거되었다.

  • Removed support for the top level filter element in function_score query, replaced by query.

    function_score query에서 top level의 filter 요소에 대한 지원은 제거되고 query 로 대체되었다.

  • The collect_payloads parameter of the span_near query has been deprecated. Payloads will be loaded when needed.

    span_near query의 collect_payloads parameter가 deprecate되었다. payload는 필요한 경우에 로드될 것이다.

  • The score_type parameter to the nested and has_child queries has been removed in favour of score_mode. The score_mode parameter to has_parent has been deprecated in favour of the score boolean parameter. Also, the total score mode has been removed in favour of the sum mode.

    score_mode 를 위하여, nestedhas_child query의 score_type parameter가 제거되었다. scoreboolean parameter를 위하여, has_parent 의 score_mode parameter는 deprecate되었다. 또한, sum mode를 위하여 total score mode가 제거되었다.

  • When the max_children parameter was set to 0 on the has_child query then there was no upper limit on how many child documents were allowed to match. Now, 0 really means that zero child documents are allowed. If no upper limit is needed then the max_childrenparameter shouldn’t be specified at all.

    max_children parameter가 has_child query에서 0 으로 설정되었을 경우, 일치하는 child document의 수에 대한 상한값이 없었다. 이제 0 은 실제로 0 개의 하위 문서가 허용됨을 의미합니다. 상한값이 필요 없다면, max_children parameter를 지정하지 말아야 한다.

  • The exists query will now fail if the _field_names field is disabled.

    _field_names field가 disable되어 있다면, exists query는 실패한다.

  • The multi_match query will fail if fuzziness is used for cross_fieldsphrase or phrase_prefix type. This parameter was undocumented and silently ignored before for these types of multi_match.

    cross_fieldsphrasephrase_prefix type에 대해 fuzziness 가 사용되면 multi_match query는 실패한다. 이 parameter는 multi_match 의 이러한 type에 대해 문서화되지 않았고 조용히 무시되었다.

  • Deprecated support for the coerce, normalize, ignore_malformed parameters in GeoPolygonQuery. Use parameter validation_method instead.

    GeoPolygonQuery에서 coerce, normalize, ignore_malformed parameter에 대한 지원이 deprecate되었다. 대신 validation_method parameter를 사용하자.

  • Deprecated support for the coerce, normalize, ignore_malformed parameters in GeoDistanceQuery. Use parameter validation_method instead.

    GeoDistanceQuery에서 coerce, normalize, ignore_malformed parameter에 대한 지원이 deprecate되었다. 대신 validation_method parameter를 사용하자.

  • Deprecated support for the coerce, normalize, ignore_malformed parameters in GeoBoundingBoxQuery. Use parameter validation_method instead.

    GeoBoundingBoxQuery에서 coerce, normalize, ignore_malformed parameter에 대한 지원이 deprecate되었다. 대신 validation_method parameter를 사용하자.

  • The geo_distance_range query is deprecated and should be replaced by either the geo_distance bucket aggregation, or geo_distance sort.

    geo_distance_range query는 deprecate되었다. geo_distance bucket aggregation이나 geo_distance sort로 대체되어야 한다.

  • For geo_distance query, aggregation, and sort the sloppy_arc option for the distance_typeparameter has been deprecated.

    geo_distance query, aggregation, distance_type parameter에 대한 sloppy_arc option의 정렬은 deprecate되었다.

Top level filter parameteredit

Removed support for the deprecated top level filter in the search api, replaced by post_filter.

search api에서 deprecate된 top level의 filter 에 대한 지원이 제거되었다. post_filter 로 대체하자.

Highlightersedit

Removed support for multiple highlighter names, the only supported ones are: plainfvh and postings.

다중 highlighter 이름에 대한 지원이 제거되었다 단 하나만 지원된다. plainfvhpostings

Term vectors APIedit

The term vectors APIs no longer persist unmapped fields in the mappings.

term vectors API는 mapping되지 않은 field를 더 이상 mapping에 유지하지 않는다.

The dfs parameter to the term vectors API has been removed completely. Term vectors don’t support distributed document frequencies anymore.

term vectors API의 dfs parameter는 완전히 제거되었다. term vectors는 더 이상 distributed document frequencies를 지원하지 않는다.

Sortedit

The reverse parameter has been removed, in favour of explicitly specifying the sort order with the order option.

reverse parameter는 order option으로 명시적으로 정렬 순서를 지정하기 위하여 제거되었다.

The coerce and ignore_malformed parameters were deprecated in favour of validation_method.

validation_method 를 위하여 coerce 와 ignore_malformed parameter는 deprecate되었다.

Inner hitsedit

  • Top level inner hits syntax has been removed. Inner hits can now only be specified as part of the nestedhas_child and has_parent queries. Use cases previously only possible with top level inner hits can now be done with inner hits defined inside the query dsl.

    top level의 inner hits 구문이 제거되었다. 이제 inner hit는 nestedhas_childhas_parent query의 일부로만 지정해야 한다. 이전에는 top level inner hit에서만 가능한 사용 사례가 query dsl 내부에 정의된 inner hit를 사용하여 수행될 수 있다.

  • Source filtering for inner hits inside nested queries requires full field names instead of relative field names. This is now consistent for source filtering on other places in the search API.

    nested query 내부의 inner hit에 대한 source filtering에는 relative field 이름 대신 full field 이름이 필요합니다. 이것은 search API의 다른 위치에서 source filtering에 대한 일관성이다.

  • Nested inner hits will now no longer include _index_type and _id keys. For nested inner hits these values are always the same as the _index_type and _id keys of the root search hit.

    이제 nested inner hit는 더 이상 _index_type_id key를 포함하지 않는다. nested inner hit에서 이 값들은 항상 root search hit의 _index_type_id key와 동일하다.

  • Parent/child inner hits will now no longer include the _index key. For parent/child inner hits the _index key is always the same as the the parent search hit.

    이제 parent/child inner hit는 더 이상 _index key를 포함하지 않는다. parent/child inner hit에서_index key는 항상 parent search hit와 동일하다.

Query Profileredit

In the response for profiling queries, the query_type has been renamed to type and lucene has been renamed to description. These changes have been made so the response format is more friendly to supporting other types of profiling in the future.

profiling query에 대한 response에서 query_type 은 type 으로 이름이 변경되었고 lucene 은 description 으로 이름이 변경되었다. 이러한 변경은 향후 다른 유형의 profiling을 지원함에 있어 response format이 보다 친숙해 지도록 만들었다.

Search preferencesedit

The search preference _only_node has been removed. The same behavior can be achieved by using _only_nodes and specifying a single node ID.

search preference _only_node 는 제거되었다. _only_nodes 를 사용하거 단일 node ID를 지정함으로써 동일한 동작이 가능하다.

The search preference _prefer_node has been superseded by _prefer_nodes. By specifying a single node, _prefer_nodes provides the same functionality as _prefer_node but also supports specifying multiple nodes.

search preference _prefer_node 는 _prefer_nodes 로 대체되었다. 단일 node를 지정함으로써, _prefer_nodes 는 _prefer_node 와 동일한 기능을 제공할 뿐만 아니라 다중 node 지정을 지원한다.

The search preference _shards accepts a secondary preference, for example _primary to specify the primary copy of the specified shards. The separator previously used to separate the _shards portion of the parameter from the secondary preference was ;. However, this is also an acceptable separator between query string parameters which means that unless the ; was escaped, the secondary preference was never observed. The separator has been changed to | and does not need to be escaped.

search preference _shards 는 이차적인 환경 설정을 허용한다. 예를 들어 _primary 는 지정된 shard의 primary 복사본을 지정한다. 이전에 parameter의 _shards 부분을 이차적인 설정과 구분하는 데 사용 된 구분 기호는 ; 이다. 그러나 이는 query string parameter 사이에 허용되는 구분 기호이기도 하다. 즉, ;가 escape하지 않은 경우 이차적인 설정이 절대로 발견되지 않았다. 구분 기호가 | 로 변경되어 escape할 필요가 없다.

Scoring changesedit

Default similarityedit

The default similarity has been changed to BM25.

기본 유사성(similarity)가 BM25 로 변경되었다.

DF formulaedit

Document frequency (which is for instance used to compute inverse document frequency - IDF) is now based on the number of documents that have a value for the considered field rather than the total number of documents in the index. This change affects most similarities. See LUCENE-6711 for more information.

document frequency(예를 들어, inverse document frequency - IDF를 계산하는데 사용되는)은 이제 index의 총 document 수가 아닌 고려 대상 field의 값을 가진 document 수를 기반으로 한다. 이 변경은 대부분의 유사성(similarity)에 영향을 미친다. 더 자세한 정보는 LUCENE-6711를 참고하자.

explain APIedit

The fields field has been renamed to stored_fields

fields field가 stored_fields 로 이름이 변경되었다.


'5.X > 8. Breaking Changes' 카테고리의 다른 글

v5.1 Breaking changes  (0) 2017.10.23
v5.0 Breaking changes  (0) 2017.10.23
v5.0-02. Mapping changes  (0) 2017.10.23
v5.0-03. Percolator changes  (0) 2017.10.23
v5.0-04. Suggester changes  (0) 2017.10.23