In Metadata: _all Field, we explained that the special _all
field indexes the values from all other fields as one big string. Having all fields indexed into one field is not terribly flexible, though. It would be nice to have one custom _all
field for the person’s name, and another custom _all
field for the address.
Metadata: _all Field에서, 하나의 큰 string으로 다른 모든 field의 값을 색인한 특별한 _all
field를 설명한 바 있다. 하나의 field에 색인된 모든 fields를 가지고 있는 것은, 그렇게 융통성 있는 것은 아니다. 하지만, 사람의 이름을 위해 사용자 정의 _all
field를, 그리고 주소를 위한 또 다른 사용자 정의 _all
field를 가지는 것은 괜찮지 않을까?
Elasticsearch provides us with this functionality via the copy_to
parameter in a field mapping:
Elasticsearch는, field mapping에서 copy_to
매개변수를 통해, 이 기능을 제공한다.
PUT /my_index { "mappings": { "person": { "properties": { "first_name": { "type": "string", "copy_to": "full_name" }, "last_name": { "type": "string", "copy_to": "full_name" }, "full_name": { "type": "string" } } } } }
With this mapping in place, we can query the first_name
field for first names, the last_name
field for last name, or the full_name
field for first and last names.
이렇게 mapping하면, first name은 first_name
field에서, last name은 last_name
field에서, first name과 last name은 full_name
field에서 query할 수 있다.
Mappings of the first_name
and last_name
fields have no bearing on how the full_name
field is indexed. The full_name
field copies the string values from the other two fields, then indexes them according to the mapping of the full_name
field only.
first_name
과 last_name
field를 mapping하는 것은 full_name
field가 색인되는 방법과는 아무런 관계가 없다. full_name
field는 다른 두 field의 문자열 값을 복사하고, full_name
field의 mapping에 따라 그것을 색인한다.
The copy_to
setting will not work on a multi-field. If you attempt to configure your mapping this way, Elasticsearch will throw an exception.
copy_to
설정은 multi-field에서 동작하지 않을 것이다. mapping을 이런 방식으로 설정하려 한다면, Elasticsearch는 예외를 발생시킬 것이다.
Why? Multi-fields are simply indexing the "main" field a different way; they don’t have their own source. Which means there is no source to copy_to
a different field.
왜? multi-field는 단순히 "주(main)" field를 다른 방식으로 색인하는 것이다. 그것들은 그들 자신의 소스(source)를 가지지 않는다. 이것은 다른 field를 copy_to
하면 소스가 없다는 것을 의미한다.
You can easily copy_to
the "main" field to achieve the same effect:
동일한 효과를 위해 "주(main)" field를 쉽게 copy_to
할 수 있다.
'2.X > 2. Search in Depth' 카테고리의 다른 글
2-3-07. Cross-fields Entity Search (0) | 2017.09.30 |
---|---|
2-3-08. Field-Centric Queries (0) | 2017.09.28 |
2-3-10. cross-fields Queries (0) | 2017.09.28 |
2-3-11. Exact-Value Fields (0) | 2017.09.28 |
2-4. Proximity Matching (0) | 2017.09.24 |