2.X/8. Breaking Changes

v2.0-07. Search changes

drscg 2017. 10. 14. 15:18

Partial fieldsedit

Partial fields have been removed in favor of source filtering.

source filtering를 위하여 partial field는 제거되었다.

search_type=count deprecatededit

The count search type has been deprecated. All benefits from this search type can now be achieved by using the (default) query_then_fetch search type and setting size to 0.

count search type은 deprecate되었다. 이 search type으로 얻을 수 있었던 것은 이제 (기본적으로) query_then_fetch search type을 사용하고, size 를 0 으로 설정하여 얻을 수 있다.

The count api internally uses the search apiedit

The count api is now a shortcut to the search api with size set to 0. As a result, a total failure will result in an exception being returned rather than a normal response with count set to 0 and shard failures.

이제 count api는 search api에 size 를 0 으로 설정한 것이다. 결과적으로, 모든 shard의 fail은, count 를 0 으로 하고 shard fail을 가진 정상적인 응답보다는 예외의 return을 초래할 것이다.

All stored meta-fields returned by defaultedit

Previously, meta-fields like _routing_timestamp, etc would only be included in the search results if specifically requested with the fields parameter. Now, all meta-fields which have stored values will be returned by default. Additionally, they are now returned at the top level (along with _index_type, and _id) instead of in the fields element.

이전 버전에서, _routing_timestamp 등과 같은 meta-field는 request에서 fields parameter로 특별히 요청해야만 검색 결과에 포함되었다. 이제는, 저장된 모든 meta-field 값은 기본적으로 return 된다. 추가로, 이들 값은 fields 요소 대신, _index_type_id 와 함께 top level에서 return 된다.

For instance, the following request:

예를 들어, 다음 request는

GET /my_index/_search?fields=foo

might return:

다음과 같이 return 된다.

{
   [...]
   "hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index":     "my_index",
            "_type":      "my_type",
            "_id":        "1",
            "_score":     1,
            "_timestamp": 10000000, 
            "fields": {
              "foo" : [ "bar" ]
            }
         }
      ]
   }
}

_timestamp 는 top level에 기본적으로 retrun된다.

Script fieldsedit

Script fields in 1.x were only returned as a single value. Even if the return value of a script was a list, it would be returned as an array containing an array:

1.x에서, script field는 단일 값으로만 return된다. script의 return value가 list일지라도 배열을 가지고 있는 배열로 return된다.

"fields": {
  "my_field": [
    [
      "v1",
      "v2"
    ]
  ]
}

In elasticsearch 2.0, scripts that return a list of values are treated as multivalued fields. The same example would return the following response, with values in a single array.

Elasticsearch 2.0에서, list를 return하는 script는 다수의 값을 가진 field로 취급된다. 위의 예제는 단일 배열을 가진, 다음과 같은 response를 return한다.

"fields": {
  "my_field": [
    "v1",
    "v2"
  ]
}

Timezone for date fieldedit

Specifying the time_zone parameter in queries or aggregations on fields of type date must now be either an ISO 8601 UTC offset, or a timezone id. For example, the value +1:00 must now be written as +01:00.

date type의 field에 대한 query나 aggregation에 time_zone parameter의 지정은 반드시 ISO 8601 UTC offset 이나 timezone id 이어야 한다. 예를 들어, +1:00 값은 반드시 +01:00 으로 지정해야 한다.

Only highlight queried fieldsedit

The default value for the require_field_match option has changed from false to true, meaning that the highlighters will, by default, only take the fields that were queried into account.

require_field_match option의 기본값은 false 에서 true 로 변경되었다. 이것은 기본적으로 highlighter가 query된 field만을 고려한다는 것을 의미한다.

This means that, when querying the _all field, trying to highlight on any field other than _all will produce no highlighted snippets. Querying the same fields that need to be highlighted is the cleaner solution to get highlighted snippets back. Otherwise require_field_match option can be set to falseto ignore field names completely when highlighting.

_all field를 query하는 경우, _all 이 아닌 모든 field에 대해 highlight하려고 하는 것은, 어떤 highlight snippet도 만들지 않는다는 것을 의미한다. highlight되어야 하는 field를 query하는 것이 highlight된 snippet을 얻는 가장 완벽한 방법이다. 반면에, highlight시에 field name을 완전히 무시하려면 require_field_match option을 false 로 설정한다.

The postings highlighter doesn’t support the require_field_match option anymore, it will only highlight fields that were queried.

highlighter의 posting은 require_field_match option을 더 이상 지원하지 않는다. 그것은 query된 field를 highlight할 뿐이다.

Postings highlighter doesn’t support match_phrase_prefixedit

The match query with type set to phrase_prefix (or the match_phrase_prefix query) is not supported by the postings highlighter. No highlighted snippets will be returned.

type을 phrase_prefix(또는 match_ phrase_prefix query)로 설정한 match query는 highlighter의 posting에 의해 지원되지 않는다. 어떤 highlight된 snippet도 return되지 않을 것이다.


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

v2.0-05. CRUD and routing changes  (0) 2017.10.15
v2.0-06. Query DSL changes  (0) 2017.10.14
v2.0-08. Aggregation changes  (0) 2017.10.14
v2.0-09. Parent/Child changes  (0) 2017.10.14
v2.0-10. Scripting changes  (0) 2017.10.14