分布式搜索引擎ES-Elasticsearch进阶
在Elasticsearch中,进行更高级的查询,如地理位置查询、高亮搜索结果、过滤等,可以使用Elasticsearch的查询DSL(领域特定语言)。以下是一个使用Elasticsearch DSL进行地理位置查询的例子:
GET /_search
{
"query": {
"geo_distance": {
"distance": "10km",
"location": {
"lat": 40,
"lon": -70
}
}
}
}
这个查询会找到所有距离给定纬度和经度(在这个例子中是纽约)距离不超过10公里的文档。
对于更复杂的查询,例如布尔查询,你可以这样做:
GET /_search
{
"query": {
"bool": {
"must": {
"match": {
"title": "Elasticsearch"
}
},
"filter": {
"range": {
"date": {
"gte": "2015-01-01",
"lt": "2016-01-01"
}
}
}
}
}
}
这个查询会找到所有标题中包含"Elasticsearch"且发布日期在2015年1月1日至2016年1月1日之间的文档。
请注意,这些查询应该在Elasticsearch的REST API中作为请求体发送。对于不同类型的查询,Elasticsearch提供了丰富的查询DSL,可以根据需求进行组合和使用。
评论已关闭