栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch~查询操作~(简单查询、批量查询、匹配查询、模糊查询、精确查询、范围查询、通配符查询、must查询、should查询、过滤查询)

ElasticSearch~查询操作~(简单查询、批量查询、匹配查询、模糊查询、精确查询、范围查询、通配符查询、must查询、should查询、过滤查询)

一、简单查询 一、查询所有结果
GET /student_info/_search
{
  "query": {"match_all": {}}
}
二、根据条件查询
GET /student_info/_search
{
  "query":{
    "match":{
      "name":"张三"
    }
  }
}
三、排序
GET /student_info/_search
{
  "query":{
    "match":{
      "name":"张三"
    }
  },
  "sort":[{
    "age":"desc"
  }]
}
四、指定查询返回结果字段
GET /student_info/_search
{
  "query":{"match_all": {}},
  "_source": ["name","age"]
}
二、批量查询 一、多ID查询
GET /student_info/_search
{
  "query":{
    "ids":{
      "values":[11001,11002,11003]
    }
  }
}
二、单索引批量查询
POST /student_info/_mget
{
  "ids":["11001","11002","11003"]
}
三、跨索引批量查询
GET /_mget
{
  "docs":[
      {
        "_index":"student_info",
        "_id":"11001"
      },
      {
        "_index":"teacher",
        "_id":"1001"
      }
    ]
}
四、跨索引批量查询
GET /_msearch
{"index":"student_info"}
{"query":{"match_all":{}},"from":0,"size":4}
{"index":"teacher"}
{"query":{"match_all":{}}}
三、匹配查询 一、关键词分词查询

先对match里面的字段值进行分词,然后进行查询

“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询profession包含 "计算机"和 "技术"的记录

GET /student_info/_search
{
  "query":{
    "match":{
      "profession":"计算机技术"
    }
  }
}
GET /student_info/_search
{
  "query":{
    "match":{
      "profession":"计算机酒店"
    }
  }
}
二、关联查询

“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询条件"operator": “and”,必须满足全部分词结果。

GET /student_info/_search
{
  "query":{
    "match":{
      "profession": {
        "query":"计算机技术",
        "operator": "and"
      }
    }
  }
}

“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询条件"operator": “or”,任意满足其一。

GET /student_info/_search
{
  "query": {
    "match":{
      "profession": {
        "query": "计算机酒店",
        "operator": "or"
      }
    }
  }
}
三、多字段查询

检索内容"我计算机技术" , 会拆词为“我”,“计算机”,“技术”匹配字段profession或desc字段中包含拆出来的词语的结果

GET /student_info/_search
{
  "query":{
    "multi_match": {
      "query": "我计算机技术",
      "fields": ["profession","desc"]
    }
  }
}
四、短语查询

match_phrase短语搜索,要求所有的分词必须同时出现在文档中,同时位置必须紧邻一致。

GET /student_info/_search
{
  "query": {
    "match_phrase": {
      "profession": "计算机科"
    }
  }
}
五、高亮搜索

highlight 高亮查找

pre_tags 标签前缀

post_tags 标签后缀

fields 规定的字段,支持多个

注意:如果不声明前缀和后缀,那边默认使用

GET /student_info/_search
{
  "query":{
    "match":{
      "name":"张三"
    }
  },
  "highlight": {
    "pre_tags":"

", "post_tags": "

", "fields": { "name":{} } } }
六、前缀匹配
GET /student_info/_search
{
  "query": {
    "match_phrase_prefix": {
      "name":"小小"
    }
  }
}
四、模糊查询
GET /student_info/_search
{
  "query":{
    "fuzzy":{
      "name":"张"
    }
  }
}
五、精确查询

term是关键词查询,参数类型type 一般都是是keyword , 精确查询,对查询的值不分词,直接进倒排索引去匹配。

term 精确查找(单个)terms 精确查找(多个)

GET /student_info/_search
{
  "query":{
    "term":{
      "name.keyword": "张三"
    }
  }
}

terms表示多条件并列,用大括号 [ ] 涵盖所查内容,类似于MySql中in方法

GET /student_info/_search
{
  "query": {
    "terms":{
      "age":[19,20,21,22]
    }
  }
}
六、范围查询 一、range

大于-gt,小于-lt,大于等于-gte,小于等于-lte

数字范围

GET /student_info/_search
{
  "query": {
    "range":{
      "age":{
        "gte":19,
        "lte":21
      }
    }
  }
}

时间范围

GET /student_info/_search
{
  "query": {
    "range":{
      "birthday": {
        "gte": "2001-06-15",
        "lte": "2001-09-20"
      }
    }
  }
}
二、from…to

范围查询包含边界

GET /student_info/_search
{
  "query":{
    "range":{
      "age":{
        "from":19,
        "to":21
      }
    }
  }
}

范围查询不包含边界

GET /student_info/_search
{
  "query": {
    "range":{
      "age":{
        "from":19,
        "to":21,
        "include_lower":false,
        "include_upper":false
      }
    }
  }
}
七、通配符查询

注:?用来匹配任意字符,*用来匹配零个或者多个字符,主要用于-英文检索

GET /student_info/_search
{
  "query":{
    "wildcard":{
      "english_name": "xiaoxiao*"
    }
  }
}
GET /student_info/_search
{
  "query":{
    "wildcard": {
      "english_name": "li?i"
    }
  }
}
八、must查询

must的多条件都必须满足

must相当于MySQL条件中的AND

GET /student_info/_search
{
  "query":{
    "bool":{
      "must":[{
        "match":{
          "name":"小小"
        }
      },
      {
        "range":{
          "age":{
            "gt":19,
            "lte":22
          }
        }
      }
      ]
    }
  }
}
九、should查询

should的条件,至少满足一个就可以should相当于MySQL条件中的OR

GET /student_info/_search
{
  "query":{
    "bool":{
      "should":[{
        "match":{
          "name":"小小"
        }
      },
      {
        "range":{
          "age":{
            "gt":19,
            "lte":22
          }
        }
      }]
    }
  }
}
十、过滤查询
GET /student_info/_search
{
  "query":{
    "bool":{
      "should":[
        {
          "match":{
            "name":"小小"
          }
        }],
        "filter":{
          "range":{
            "age":{
              "gt":21,
              "lte":22
            }
          }
        }
    }
  }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号