zoukankan      html  css  js  c++  java
  • 006 ES获取文档

    1.HEAD检查是否存在文档

      The API also allows to check for the existence of a document using HEAD

    1 HEAD index2/_doc/1

      结果:

    1 200 - OK

       

    2.Source 过滤

      ①By default, the get operation returns the contents of the _source field unless you have used the stored_fields parameter or if the _source field is disabled. You can turn off _source retrieval by using the _source parameter。

      意思:

      默认情况下,返回的结果是_source。

      可以使用_source进行禁用。

    1 GET index2/_doc/1

      效果:

     1 {
     2   "_index" : "index2",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 12,
     6   "_seq_no" : 11,
     7   "_primary_term" : 4,
     8   "found" : true,
     9   "_source" : {
    10     "name" : "tom1",
    11     "age" : 20
    12   }
    13 }

      禁用:

    1 GET index2/_doc/1?_source=false

      结果:

    1 {
    2   "_index" : "index2",
    3   "_type" : "_doc",
    4   "_id" : "1",
    5   "_version" : 12,
    6   "_seq_no" : 11,
    7   "_primary_term" : 4,
    8   "found" : true
    9 }

      ②If you only need one or two fields from the complete _source, you can use the _source_includesand _source_excludes parameters to include or filter out the parts you need. This can be especially helpful with large documents where partial retrieval can save on network overhead. Both parameters take a comma separated list of fields or wildcard expressions. Example

      意思:

      对于大型的文档,只过滤自己需要的结果是合适的,降低网络开销

      可以使用参数进行控制source中的参数包含或者不包含。这种属于限制两边,留下中间的做法。

    1 GET twitter/_doc/1

      结果:

     1 {
     2   "_index" : "twitter",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 6,
     6   "_seq_no" : 5,
     7   "_primary_term" : 1,
     8   "found" : true,
     9   "_source" : {
    10     "user" : "kimchy",
    11     "post_date" : "2009-11-15T14:12:12",
    12     "message" : "trying out Elasticsearch"
    13   }
    14 }

      过滤:

    1 GET twitter/_doc/1?_source_includes=u*,message&_source_excludes=post_date

      结果:

     1 {
     2   "_index" : "twitter",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 6,
     6   "_seq_no" : 5,
     7   "_primary_term" : 1,
     8   "found" : true,
     9   "_source" : {
    10     "message" : "trying out Elasticsearch",
    11     "user" : "kimchy"
    12   }
    13 }

      ③If you only want to specify includes, you can use a shorter notation

    1 GET twitter/_doc/1?_source=message,user

      结果:

     1 {
     2   "_index" : "twitter",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 6,
     6   "_seq_no" : 5,
     7   "_primary_term" : 1,
     8   "found" : true,
     9   "_source" : {
    10     "message" : "trying out Elasticsearch",
    11     "user" : "kimchy"
    12   }
    13 }

    3.存储字段

      The get operation allows specifying a set of stored fields that will be returned by passing the stored_fields parameter. If the requested fields are not stored, they will be ignored. Consider for instance the following mapping

      意思是:

      可以通过设置参数,单独返回特定的字段

      下面是mapping:

     1 PUT tui
     2 {
     3    "mappings": {
     4        "properties": {
     5           "counter": {
     6              "type": "integer",
     7              "store": false
     8           },
     9           "tags": {
    10              "type": "keyword",
    11              "store": true
    12           }
    13        }
    14    }
    15 }

      结果:

    1 {
    2   "acknowledged" : true,
    3   "shards_acknowledged" : true,
    4   "index" : "tui"
    5 }

      添加文档:

    1 PUT tui/_doc/1
    2 {
    3     "counter" : 1,
    4     "tags" : ["red","yellow"]
    5 }

      获取:

    1 GET tui/_doc/1

      结果:

     1 {
     2   "_index" : "tui",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 1,
     6   "_seq_no" : 0,
     7   "_primary_term" : 1,
     8   "found" : true,
     9   "_source" : {
    10     "counter" : 1,
    11     "tags" : [
    12       "red",
    13       "yellow"
    14     ]
    15   }
    16 }

      使用store_field:

    1 GET tui/_doc/1?stored_fields=tags,counter

      结果:

     1 {
     2   "_index" : "tui",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 1,
     6   "_seq_no" : 0,
     7   "_primary_term" : 1,
     8   "found" : true,
     9   "fields" : {
    10     "tags" : [
    11       "red",
    12       "yellow"
    13     ]
    14   }
    15 }

      对于上面的结果,有些说明:

      Field values fetched from the document itself are always returned as an array. Since the counterfield is not stored the get request simply ignores it when trying to get the stored_fields.

      返回的结果作为一个数组,因为counter没有被存储,所以在获取stored_fields时或略。

    4._source目录

      Use the /{index}/_source/{id} endpoint to get just the _source field of the document, without any additional content around it. 

    1 GET twitter/_doc/1

      效果:

     1 {
     2   "_index" : "twitter",
     3   "_type" : "_doc",
     4   "_id" : "1",
     5   "_version" : 6,
     6   "_seq_no" : 5,
     7   "_primary_term" : 1,
     8   "found" : true,
     9   "_source" : {
    10     "user" : "kimchy",
    11     "post_date" : "2009-11-15T14:12:12",
    12     "message" : "trying out Elasticsearch"
    13   }
    14 }

      使用_source

    1 GET twitter/_source/1

      效果:

    1 {
    2   "user" : "kimchy",
    3   "post_date" : "2009-11-15T14:12:12",
    4   "message" : "trying out Elasticsearch"
    5 }
  • 相关阅读:
    Backbone学习之todos实现
    由$(this).attr('id')引出的一点感想
    JS类的实现
    JS设计模式之接口
    JS设计模式之工厂模式
    JS设计模式之序
    JS的继承
    you think you know javascript?
    js中的null和undefined
    作用域、闭包等概念的理解
  • 原文地址:https://www.cnblogs.com/juncaoit/p/11284381.html
Copyright © 2011-2022 走看看