前言:
copy_to
参数允许您将多个字段的值复制到一个组字段中,然后可以将其作为单个字段进行查询。
案例:
例如,可以将first_name和last_name字段复制到full_name字段中,如下所示:
PUT my-index-000001
{
"mappings": {
"properties": {
"first_name": {
"type": "text",
"copy_to": "full_name"
},
"last_name": {
"type": "text",
"copy_to": "full_name"
},
"full_name": {
"type": "text"
}
}
}
}
PUT my-index-000001/_doc/1
{
"first_name": "John",
"last_name": "Smith"
}
GET my-index-000001/_search
{
"query": {
"match": {
"full_name": {
"query": "John Smith",
"operator": "and"
}
}
}
}
-
first_name
和last_name
字段的值被复制到full_name
字段中。 -
该
first_name
和last_name
领域仍只能查询了第一个名字和姓氏,但full_name
字段可以查询名字和姓氏。
注意:
-
copy_to
是字段值,而不是term
(由分析过程产生)。 -
_source不会修改原始字段。
-
可以将相同的值复制到多个字段,使用
"copy_to": [ "field_1", "field_2" ]
-
不能通过中间字段递归复制,例如 field_1 上的 copy_to 到 field_2 和 field_2 上的 copy_to 到 field_3,期望索引到 field_1 将在 field_3 中结束,而是使用 copy_to 直接复制到来自原始字段的多个字段。