美文网首页
es选择合适的查询方式

es选择合适的查询方式

作者: 奋斗的韭菜汪 | 来源:发表于2021-01-22 19:21 被阅读0次

    GET查询方式:

    特点:最简单的查询方式,类似key-value键值对查询方式,而且实时可靠

    #查询索引名为index-name,id为id的记录
    GET /{index-name}/_doc/{id}
    #条件组合查询,同时查出索引名为product_codes,记录id为1089和1088的记录
    GET /_mget
    {
      "docs": [
        {
          "_index": "product_codes",
          "_id": 1089
        },
        {
          "_index": "product_codes",
          "_id": 1088
        }
      ]
    }
    或
    GET /product_codes/_mget
    {
      "ids": [
        "1088",
        "1089"
      ]
    }
    或
    GET /product_codes/_mget
    {
      "docs":[
        {
          "_id":"1089"
        },
            {
          "_id":"1088"
        }
        ]
    }
    

    _source:是否需要返回原数据
    _source_includes:原数据返回包含字段
    _source_excludes:原数据返回忽略字段
    routing:分片路由字段
    preference:分片选择,默认是RoundRobin算法,可选择local本地优先
    refresh:设置索引强制刷新,取值返回true,false
    version:数据版本
    store_fields:原始数据存储在lucene中,字段属性store设置为true

    search查询

    特点:是最常用的,基于倒排索引实现的,在同类多条件查询里效率是最高的

    GET _search
    GET /wzx_test_001/_search/
    

    url请求参数(常用的和需要考虑的):

    request_cache:是否启用查询存在结果为0
    from:其实参数位置
    Perference:分配查询优先度,默认基于Es统计数据
    q:通过URL输入查询条件
    size:单页数据大小
    sort:排序字段
    routing:路由控制
    _source:返回原始数据控制
    scroll:是否滚动快照查询
    search_type:全局打分还是分片打分,默认分片打分
    version:是否返回数据版本
    track_total_hits:是否返回总数量,7.0之后默认返回1万条,6.X版本不兼容

    GET /product_codes/_search
    {
      "version": true,
      "from": 1,
      "track_total_hits":5,
      "sort": [
        {
          "id": {
            "order": "asc"
          }
        }
      ]
    }
    

    DSL领域查询语言:
    特点:表达能力丰富、学习难度大,需要持续练习

    #查询codeSerial为H190386pro40000002002的记录
    GET /product_codes/_search
    {
      "query": {
        "term": {
          "codeSerial": {
            "value": "H190386pro40000002002"
          }
        }
      }
    }
    GET /product_codes/_search
    {
      "query": {
        "bool": {
          #组合模式,should相当于或
          "should": [
            {
              "term": {
                "codeSerial": {
                  "value": "H190386pro40000002002"
                }
              }
            },
            {
              "match": {
                "productName": "1P"
              }
            }
          ]
        }
      }
    }
    #查询所有
    GET /product_codes/_search
    {
      "query": {
        "match_all": {}
      }
    }
    

    分值("_score")查询比较耗性能,
    es解决方案:filter查询(无分值计算),内部使用bitmap算法去合并查询,无分值计算限制在精确查询领域和非分词领域

    相关文章

      网友评论

          本文标题:es选择合适的查询方式

          本文链接:https://www.haomeiwen.com/subject/fpllzktx.html