zoukankan      html  css  js  c++  java
  • ES查询底层原理

    一、正排索引

    1、倒排索引的优势在于查找包含某个项的文档,如果用它确定哪些项是否存在文档中那么就使用正排索引

     2、区别正排索引和倒排索引

     3、doc_value与fielddata

    二、基于mget批量查询以及基于bulk的批量增删改

    1、mget:批量查询

    GET /<index>/_mget

    GET /product/_mget
    {
      "docs":[
        {
          "_id":2,
          "_source":{
            "include":["name"],
            "exclude":["price"]
          }
        }
        ]
    }

    2、bulk:批量增删改  no-query

    POST /<index>/_bulk

    {"action": {"metadata"}}

    {"data"}

    Operate

    ① create:PUT /index/_create/id/,强制创建(是否制定id)

      如果不存在则报错,如果存在则报错

    指定id:
    PUT /product2/_create/1/ { "name":"xiaomi", "desc":"shouji", "price":3999 }

      自动生成id:

      POST /product2/_doc
      {
        "name":"xiaomi",
        "desc":"shouji",
        "price":3999
      }

      创建

      POST /_bulk
      {"create":{"_index":"product2","_id":"1"}}
      {"name":"_buld create1"}
      {"create":{"_index":"product2","_id":"11"}}
      {"name":"_buld create1"}

    ② delete:删除(lazy delete原理)

    POST /_bulk
    {"delete":{"_index":"product2","_id":"11"}}

    ③ index:可以是创建,也可以是全量替换

    POST /_bulk
    {"index":{"_index":"product2","_id":"1"}}
    {"doc":{"name":"bulk name1"}}
    {"index":{"_index":"product2","_id":"11"}}
    {"doc":{"name":"bulk name2"}}

    ④ update:执行partial update(全量替换,部分替换)

    POST /_bulk
    {"update":{"_index":"product2","_id":"1","retry_on_conflict":"3"}}
    {"doc":{"name":"bulk name"}}

    三、ES并发冲突问题(悲观锁和乐观锁)

    (1) 悲观锁:各种情况,都加锁,读写锁、行级锁、表级锁。使用简单,但是并发能力很低

    (2) 乐观锁:并发能力高,操作麻烦,每次no-query操作都需要比对version

  • 相关阅读:
    ajax初步(1) fly
    jquery(1) fly
    图片轮播 fly
    仿慕课网教程html+css页面前段时间学习总结(1) fly
    jquery(3)常用方法 fly
    再次遭遇VS设计视图假死
    注册表导致VS2008切换设计视图假死
    BUUCTF PWN 铁人三项(第五赛区)_2018_rop
    buuctf re [FlareOn4]IgniteMe
    buuctf re [WUSTCTF2020]level3
  • 原文地址:https://www.cnblogs.com/lyc-code/p/13673544.html
Copyright © 2011-2022 走看看