【EslaticSearch】ES 搜索引擎详解

本文详细讲解了ES搜索引擎中的高级查询功能,包括全文检索、精确查询、地理范围查询、复合查询、结果排序、分页和高亮,帮助开发者更高效地筛选和呈现信息。

查询文档

基本语法

GET /索引库名/_search
{
   
   
    "query":{
   
   
        "查询类型":{
   
   
            "查询条件":"查询条件值"
        }
    }
}

这里的query代表一个查询对象,里面可以有不同的查询属性,ES提供了基于JSON的DSL来定义查询。常见的查询类型包括:

  • 查询所有:查询出所有数据,一般测试用。例如:match_all
  • 全文检索:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match_query、multi_match_query
  • 精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:term、range
  • 地理查询:根据经纬度查询。例如:geo_distance、geo_bounding_box
  • 复合查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:bool、function_score
#查询所有
GET /hotel/_search
{
   
   
  "query": {
   
   
    "match_all": {
   
   }
  }
}

效果:

{
   
   
  "took" : 1, //查询花费时间,单位是毫秒
  "timed_out" : false,  //是否超时
  "_shards" : {
   
     //分片信息
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
   
    //搜索结果
    "total" : {
   
    //搜索到的总条数
      "value" : 201,
      "relation" : "eq"
    },
    "max_score" : 1.0, //所有结果中文档得分的最高分
    "hits" : [ //搜索结果的文档对象数组,每个元素是一条搜索到的文档信息
      {
   
   
        "_index" : "hotel",
        "_type" : "_doc",
        "_id" : "36934",
        "_score" : 1.0,
        "_source" : {
   
   
          "address" : "静安交通路40号",
          "brand" : "7天酒店",
          "business" : "四川北路商业区",
          "city" : "上海",
          "id" : 36934,
          "location" : "31.251433, 121.47522",
          "name" : "7天连锁酒店(上海宝山路地铁站店)",
          "pic" : "https://m.tuniucdn.com/fb2/t1/G1/M00/3E/40/Cii9EVkyLrKIXo1vAAHgrxo_pUcAALcKQLD688AAeDH564_w200_h200_c1_t0.jpg",
          "price" : 336,
          "score" : 37,
          "starName" : "二钻"
        }
      },
        //省略..........
    ]
  }
}

全文检索

  • 对用户搜索的内容做分词,得到词条
  • 根据词条去倒排索引库中匹配,得到文档id
  • 根据文档id找到文档,返回给用户

match

match查询:全文检索查询的一种,会对用户输入内容分词,然后去倒排索引库检索,语法:

#match 倒排索引库查询
GET /hotel/_search
{
   
   
  "query": {
   
   
    "match": {
   
   
      "all": "外滩如家"
    }
  }
}

效果:

{
   
   
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
   
   
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
   
   
    "total" : {
   
   
      "value" : 32,
      "relation" : "eq"
    },
    "max_
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上官玺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值