DSL查询文档
-
-
term查询(查询匹配字段值)查询索引
hotel
里city
字段值为 “上海” 的文档(city
一般是 keyword 类型,不分词 )可用于状态过滤(如status: published
)、精确 ID 查找等,比如筛选已发布文章 。GET /hotel/_search{"query": {"term": {"city": {"value": "上海" }}} }
-
range查询(范围匹配)搜索索引
hotel
中price
字段值在 100 到 300 之间的文档,常用于数值、日期范围筛选,像 “查找近一个月内的订单”“价格区间商品” 等场景 。GET /hotel/_search{"query": {"range": {"price": {"gte": 100, "lte": 300 }}} }
-
-
地理坐标查询(以 geo_distance 为例)查询索引中
location
字段表示的地理位置,距离经纬度40,-70
方圆 10km 内的文档,典型场景是 “查找用户附近的酒店、门店”,比如外卖 App 找周边商家 。GET /location/_search{"query": {"geo_distance": {"distance": "10km", "location": "40,-70" }} }
-
组合查询(以bool为例)想查询索引
hotel
里,category
为 “tech” 且price
在 100 - 300 之间的文档,用bool
组合查询must
表示 “必须满足”,类似 AND 逻辑;还可搭配should
(或逻辑 )、must_not
(非逻辑 ),应对复杂业务条件,比如 “促销商品且库存大于 0 或人气标签商品” 这类需求 。GET /hotel/_search{"query": {"bool": {"must": [ {"term": {"category": "tech" }},{"range": {"price": {"gte": 100,"lte": 300}}}]}} }