• Elastic Search常用元数据简介


    在ES中,除了定义的index,type,和管理的document外,还有若干的元数据。这些元数据用于记录ES中需要使用的核心数据。在ES中,元数据通常使用下划线’_’开头。


    1 查看数据
    GET /index_name/type_name/id
    如:
    GET /test_index/my_type/1
    结果:

    {
        "_index": "test_index",
        "_type": "my_type",
        "_id": "1",
        "_version": 1,
        "found": true,
        "_source": {
            "name": "test_doc_01",
            "remark": "first test elastic search",
            "order_no": 1
        }
    }
    

      

    2 _index
    代表document存放在哪个index中,_index就是索引的名字。生产环境中,类似的Document存放在一个index中,非类似的Document存放在不同的index中。一个index中包含若干相似的Document。index名称必须是小写的,且不能以下划线'_','-','+'开头。

    3 _type
    代表document属于index中的哪个type(类别),就是type的名字。ES6.x版本中,一个index只能定义一个type。结构类似的document保存在一个index中。Type命名要求:字符大小写无要求,不能下划线开头,不能包含逗号。(ES低版本,5.x或更低版本。一般一个索引会划分若干type,逻辑上对index中的document进行细致的划分。在命名上,可以全大写或者全小写,不能下划线开头,不能包含逗号。)


    4 _id
    代表document的唯一标识。使用index、type和id可以定位唯一的一个document。id可以在新增document时手工指定,也可以由es自动创建。
    4.1 手动指定id
    语法:
    PUT /index_name/type_name/id_value
    {
        "field_name" : "field_value"
    }

    使用这种方式,需要考虑是否满足手动指定id的条件。如果数据是从其他数据源中读取并新增到ES中的时候,使用手动指定id。如:数据是从Database中读取并新增到ES中的,那么使用Database中的PK作为ES中的id比较合适。建议,不要把不同表的数据新增到同一个index中,可能有id冲突。
    4.2 自动生成id
    语法:
    POST /index_name/type_name
    {
        "field_name" : "field_value"
    }
    自动生成的ID特点:长度为20的字符串;URL安全(经过base64编码的);GUID生成策略,支持分布式高并发(在分布式系统中,并发生成ID也不会有重复可能,参考https://baike.baidu.com/item/GUID/3352285?fr=aladdin)。适合用于手工录入的数据。数据没有一个数据源,且未经过任何的管理和存储。这种数据,是没有唯一标识,如果使用手工指定id的方式,容易出现id冲突,导致数据丢失。相对少见。


    5 _source元数据
    就是查询的document中的field值。也就是document的json字符串。此元数据可以定义显示结果(field)。语法是:
    GET /index_name/type_name/id_value?_source=field_name1,field_name2


    6 _version元数据
    代表的是document的版本。在ES中,为document定义了版本信息,document数据每次变化,代表一次版本的变更。版本变更可以避免数据错误问题(并发问题,乐观锁),同时提供ES的搜索效率。
    第一次创建Document时,_version版本号为1,默认情况下,后续每次对Document执行修改或删除操作都会对_version数据自增1。
    删除Document也会_version自增1。
    当使用PUT命令再次增加同id的Document,_version会继续之前的版本继续自增。

  • 相关阅读:
    学号 20175201张驰 《Java程序设计》第5周学习总结
    2018-2019-20175329 实验五《网络编程与安全》实验报告
    MySort作业与IO-Myhead
    实验四《Android程序设计》实验报告封面
    学号 20175329 《Java程序设计》第10周学习总结
    2018-2019-20175329 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
    MyCP(课下作业,必做)
    # 20175329 2018-2019-3 《Java程序设计》第九周学习总结
    学号 20175329 2018-2019-3《Java程序设计》第八周学习总结
    学号 20175329 2018-2019-3《Java程序设计》第八周学习总结
  • 原文地址:https://www.cnblogs.com/yucongblog/p/11924926.html
Copyright © 2020-2023  润新知