es6.2.4学习----使用copy_to实现_all
2018-06-19 本文已影响0人
轻易流逝
_all:一个把其它字段值 当作一个大字符串来索引的特殊字段。
当你不知道所需查询字段,在文档中的位置时使用_all字段是非常适合的。
曾经在es5.6.3版本中使用过_all字段查询相关文档,这次在es6中我又一次尝试使用这个字段,结果这个_all被禁止了。
PUT ik_demo
{
"mappings": {
"doc":{
"_all": {"enabled": true},
"properties": {
"title":{
"type": "text"
},
"content":{
"type": "text"
},
"author":{
"type": "text"
}
}
}
}
}
结果
_all被取消了
这个字段被禁用了,但是我们可以自定义_all字段。
使用copy_to参数实现_all功能:
PUT ik_demo
{
"mappings": {
"doc":{
"properties": {
"title":{
"type": "text",
"copy_to": "allProp"
},
"content":{
"type": "text",
"copy_to": "allProp"
},
"author":{
"type": "text",
"copy_to": "allProp"
},
"allProp":{
"type": "text"
}
}
}
}
}
索引几条数据
POST ik_demo/doc
{
"title":"程序员是怎样炼成的",
"content":"首先...然后...坚持...最终...",
"author":"码界小白"
}
POST ik_demo/doc
{
"title":"猿哥最棒",
"content":"瞎比比",
"author":"程序员鼓励师"
}
POST ik_demo/doc
{
"title": "世上仅有",
"content": "无敌程序员",
"author": "猿哥"
}
然后直接查询allProp字段就可以了。
GET ik_demo/_search
{
"query":{
"match": {
"allProp": "程序员"
}
}
}
查询结果:
查询结果
所有含有"程序员"的文档均被搜索到了。