copy_to(合并参数)

copy_to 参数允许你创建自定义的 _all 字段.换句换来说,可以将多个字段的值复制到 group field(组字段),然后可以作为单个字段进行查询.例如, first_name和 **last_name**可以复制到 full_name字段中,如下所示 :

curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "my_type": {
      "properties": {
        "first_name": {
          "type": "text",
          "copy_to": "full_name"  # 1
        },
        "last_name": {
          "type": "text",
          "copy_to": "full_name"  # 2
        },
        "full_name": {
          "type": "text"
        }
      }
    }
  }
}
'
curl -XPUT 'localhost:9200/my_index/my_type/1?pretty' -H 'Content-Type: application/json' -d'
{
  "first_name": "John",
  "last_name": "Smith"
}
'
curl -XGET 'localhost:9200/my_index/_search?pretty' -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "full_name": {  # 3
        "query": "John Smith",
        "operator": "and"
      }
    }
  }
}
'

| 12 | first_name(名字)和 last_name(姓氏)字段复制到full_name 字段. | | 3 | first_name(名字)和 last_name(姓氏)字段仍然可以分别查询, full_name 可以通过 first_name(名字)和 last_name(姓氏)来查询. |

一些要点:

  • 复制的是字段值,而不是 term(词条)(由分析过程产生).
  • _source 字段不会被修改来显示复制的值. 
  • 相同的值可以复制到多个字段,通过 "copy_to": [ "field_1", "field_2" ] 来操作.