es6.2.4学习----使用copy_to实现_all

_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": "程序员"
    }
  }
}

查询结果:


查询结果

所有含有"程序员"的文档均被搜索到了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容