• Elasticsearch6.x查询api


    1.获取API

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

    curl -X GET "localhost:9200/twitter/_doc/0"

    上述get操作的结果是:

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

    上述结果包括检索文档的_index_type_id,和_version ,包括实际文档的_source 文档

    2.实时性

    默认情况下,get API是实时的,并且不受索引刷新率的影响。

    如果文档已更新但尚未刷新,则get API将就地发出刷新调用以使文档可见。

    这也将使上次刷新后其他文档发生变化。为了禁用实时GET,可以将realtime参数设置false

    3.源过滤

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

    curl -X GET "localhost:9200/twitter/_doc/0?_source=false"

    如果您只需要完整的一个或两个字段,则_source可以使用_source_includes 和_source_excludes参数来包含或过滤掉您需要的部分。

    这对于大型文档尤其有用,其中部分检索可以节省网络开销。这两个参数都使用逗号分隔的字段列表或通配符表达式。例:

    curl -X GET "localhost:9200/twitter/_doc/0?_source_includes=*.id&_source_excludes=entities"

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

    curl -X GET "localhost:9200/twitter/_doc/0?_source=*.id,retweeted"

    4.存储的字段

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

    curl -X PUT "localhost:9200/twitter" -H 'Content-Type: application/json' -d'
    {
       "mappings": {
          "_doc": {
             "properties": {
                "counter": {
                   "type": "integer",
                   "store": false
                },
                "tags": {
                   "type": "keyword",
                   "store": true
                }
             }
          }
       }
    }
    '

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

    curl -X PUT "localhost:9200/twitter/_doc/1" -H 'Content-Type: application/json' -d'
    {
        "counter" : 1,
        "tags" : ["red"]
    }
    '

    然后尝试检索它:

    curl -X GET "localhost:9200/twitter/_doc/1?stored_fields=tags,counter"

    上述get操作的结果是:

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

    从文档本身获取的字段值始终作为数组返回。由于该counter字段未存储,因此get请求在尝试获取时直接忽略它

    也可以检索字段之类的元数据字段_routing

    curl -X PUT "localhost:9200/twitter/_doc/2?routing=user1" -H 'Content-Type: application/json' -d'
    {
        "counter" : 1,
        "tags" : ["white"]
    }
    '
    curl -X GET "localhost:9200/twitter/_doc/2?routing=user1&stored_fields=tags,counter"

    上述get操作的结果是:

    {
       "_index": "twitter",
       "_type": "_doc",
       "_id": "2",
       "_version": 1,
       "_seq_no" : 13,
       "_primary_term" : 1,
       "_routing": "user1",
       "found": true,
       "fields": {
          "tags": [
             "white"
          ]
       }
    }

    此外,只有叶子字段可以通过stored_field选项返回因此无法返回对象字段,此类请求将失败。

     

    5.直接获取_source

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

    curl -X GET "localhost:9200/twitter/_doc/1/_source"

    6.路由

    使用控制路由的能力进行索引时,为了获取文档,查询时需要提供相同的路由值。例如

    curl -X GET "localhost:9200/twitter/_doc/2?routing=user1"

    以上将获得带有id的推文2,但将根据用户进行路由。请注意,在没有正确路由的情况下发出get将导致无法获取文档。

    7.查询偏好设置

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

    preference可设置为:

    _primary
    该操作将仅在主分片上执行。
    _local
    如果可能,操作将优选在本地分配的分片上执行。
    自定义(字符串)值
    将使用自定义值来保证相同的分片将用于相同的自定义值。

    8.刷新

    可以在get之前将refresh设置为true,保证可搜索到最新数据。设置true应该是在经过仔细考虑和验证后,这会导致系统负载过重(并减慢索引)。

    9.分布式

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

    10.版本控制支持

    version仅当文档的当前版本等于指定的版本时,才可以使用该参数检索文档。对于所有版本类型,此行为都是相同的,

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

  • 相关阅读:
    课后作业成绩汇总
    关于作业提交要求声明 2017-09-22
    团队编程项目作业成绩汇总
    结对项目作业成绩汇总
    团队组信息
    小知识记录:第XI篇
    小知识记录:第X篇
    小知识记录:第十二篇
    小知识记录:第十一篇
    小知识记录:第十篇
  • 原文地址:https://www.cnblogs.com/gc65/p/10656114.html
Copyright © 2020-2023  润新知