zoukankan      html  css  js  c++  java
  • elasticsearch 基础 —— Get API

    Get API

    get API允许根据其id从索引中获取指定类型的JSON文档。以下示例从名为twitter的索引获取JSON文档,该索引类型名为_doc,id值为0:

    GET twitter/_doc/0

    上述get操作的结果是:

    {
        "_index" : "twitter",
        "_type" : "_doc",
        "_id" : "0",
        "_version" : 1,
        "found": true,
        "_source" : {
            "user" : "kimchy",
            "date" : "2009-11-15T14:12:12",
            "likes": 0,
            "message" : "trying out Elasticsearch"
        }
    }

    上述结果包括_index_type_id_version 我们希望检索,包括实际文档的_source 文档,如果可以发现(如由指示found 字段中响应)。

    API还允许使用以下方式检查文档是否存在 HEAD

    HEAD twitter/_doc/0

    Realtime

    默认情况下,get API是实时的,并且不受索引刷新率的影响(当数据对搜索可见时)。如果文档已更新但尚未刷新,则get API将就地发出刷新调用以使文档可见。这也将使上次刷新后其他文档发生变化。为了禁用实时GET,可以将realtime参数设置为false

    Source filtering

    默认情况下,get操作返回_source字段的内容,除非您已使用该stored_fields参数或该_source字段已禁用。您可以_source使用以下_source参数关闭检索:

    GET twitter/_doc/0?_source=false

    如果您只需要完整的一个或两个字段,则_source可以使用_source_include &_source_exclude参数来包含或过滤掉您需要的部分。这对于大型文档尤其有用,其中部分检索可以节省网络开销。这两个参数都使用逗号分隔的字段列表或通配符表达式。例:

    GET twitter/_doc/0?_source_include=*.id&_source_exclude=entities

    如果您只想指定包含,则可以使用较短的表示法:

    GET twitter/_doc/0?_source=*.id,retweeted

    Stored Fields

    get操作允许指定将通过传递stored_fields参数返回的一组存储字段。如果未存储请求的字段,则将忽略它们。例如,考虑以下映射:

    PUT twitter
    {
       "mappings": {
          "_doc": {
             "properties": {
                "counter": {
                   "type": "integer",
                   "store": false
                },
                "tags": {
                   "type": "keyword",
                   "store": true
                }
             }
          }
       }
    }

    现在我们可以添加一个文档:

    PUT twitter/_doc/1
    {
        "counter" : 1,
        "tags" : ["red"]
    }

    并尝试检索它:

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

    上述get操作的结果是:

    {
       "_index": "twitter",
       "_type": "_doc",
       "_id": "1",
       "_version": 1,
       "found": true,
       "fields": {
          "tags": [
             "red"
          ]
       }
    }

    直接_source获取

    使用/{index}/{type}/{id}/_source端点只获取_source文档的字段,而不包含任何其他内容。例如:

    GET twitter/_doc/1/_source

    您还可以使用相同的源过滤参数来控制_source将返回的部分:

    GET twitter/_doc/1/_source?_source_include=*.id&_source_exclude=entities'
    

    注意,_source端点还有一个HEAD变体,可以有效地测试document _source的存在。如果在映射中禁用了现有文档,则该文档将没有_source 。

    HEAD twitter/_doc/1/_source
    

    首选项

    控制preference哪个分片副本执行get请求。默认情况下,操作在分片复制副本之间随机化。

    preference可设置为:

    _primary

    该操作将仅在主分片上执行。

    _local

    如果可能,操作将优先在本地分配的分片上执行。

    自定义(字符串)值

    自定义值将用于保证相同的分片将用于相同的自定义值。当在不同的刷新状态下击中不同的分片时,这可以帮助“跳跃值”。示例值可以是Web会话ID或用户名。

    刷新

    refresh参数可以设置为true以刷新有关的碎片get操作之前,并使其可搜索。设置它true应该在仔细考虑和验证之后完成,这不会导致系统负载过重(并减慢索引速度)。

    分布式

    get操作被散列为特定的分片ID。然后它被重定向到该分片ID中的一个副本并返回结果。副本是主分片及其在该分片ID组中的副本。这意味着我们将拥有的副本越多,我们将获得更好的GET缩放。

    版本控制支持

    version只有当当前版本等于指定文档时,才能使用该参数检索文档。对于所有版本类型,此行为都是相同的,FORCE但始终检索文档的版本类型除外。请注意,FORCE不推荐使用版本类型。

    在内部,Elasticsearch已将旧文档标记为已删除并添加了一个全新的文档。旧版本的文档不会立即消失,但您将无法访问它。当您继续索引更多数据时,Elasticsearch会在后台清除已删除的文档。

  • 相关阅读:
    UltraIso制作U盘启动盘教程
    Windows7下搭建FTP服务器(使用微软)
    Win7中IIS和ASP的安装、配置和使用
    解决ubuntu中vi不能正常使用方向键与退格键的问题
    SQLSERVER的TOP
    VBA读取文件路径中的文件
    博乐园,我来了
    JSON对象,初步认识
    【原创翻译】深入理解CSS盒子模型
    深入浅出CSS3:backgroundclip,backgroundorigin和borderimage教程
  • 原文地址:https://www.cnblogs.com/gmhappy/p/11864058.html
Copyright © 2011-2022 走看看