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" ]
来操作.