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_

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

被折叠的 条评论
为什么被折叠?



