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

查询结果:


查询结果

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

上一篇下一篇

猜你喜欢

热点阅读