DSL查询文档

文章介绍了如何在Elasticsearch中使用不同类型的查询,包括全字匹配、多字段匹配、精确查询(term和range)、地理距离查询以及复合查询(如function_score和bool)。这些技术有助于优化酒店搜索结果的准确性和效率。
摘要由CSDN通过智能技术生成


#查询所有
GET /hotel/_search
{
  "query": {
    "match_all": {}
  }
}
{
  "took" : 0,        // 花费了多长时间
  "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" : "二钻"
        }
      }]
   }
}

#全文检索
GET /hotel/_search
{
  "query": {
    "match": {
      "all": "如家"
    }
  }
}

 匹配度越高,排名越靠前

GET /hotel/_search
{
  "query": {
    "multi_match": {
      "query": "7天",
      "fields": ["name","brand","city"]
    }
  }
}

 查询的字段越多,搜索的速度越慢,推荐使用copy到同一个字段中进行查询

精确查询,查询字段不能分词,并且是与查询字段完全匹配

#精确查询
#term 根据词条精确查询
#range 根据值的范围查询
GET /hotel/_search
{
  "query": {
   "term": {
     "city": {
       "value": "北京"
     }
   } 
  }
}
GET /hotel/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 100,
        "lte": 1000
      }
    }
  }
}

 

 地理查询

#地理查询
#查询附件的坐标点
GET /hotel/_search
{
  "query": {
   "geo_distance":{
     "distance" : "15km",
      "location" : "31.21,121.5"
   }
  }
}

 复合查询

 

GET /hotel/_search
{
  "query": {
   "function_score": {
     "query": {
       "match": {
         "all": "外滩"
       }
     },
     "functions": [
       {
         "filter": {
           "term": {
             "id": "1"
           }
         },
         "weight": 10
       }
     ],
     "boost_mode": "multiply"
   }
  }
}

 

 

GET /hotel/_search
{
  "query": {
    "bool": {
      "must": [
        {
         "match": {
           "name": "如家"
         }
        }
      ],
      "must_not": [
        {
          "range": {
            "price": {
              "gt": 400
            }
          }
        }
      ],
      "filter": [
        {
          "geo_distance": {
            "distance": "15km"
            , "location": {
              "lat": 31.21,
              "lon": 121.5
            }
          }
        }
      ]
    }
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值