赞
踩
elasticsearch,简称es,是一个开源的搜索引擎,es的作用非常强大,普通的从数据库读取数据的方式已经不能满足我们形形色色的搜索要求,es就可以。就比如我们想要在茫茫人海中找到那些身高一米八、年龄在30岁到35岁之间、喜欢狗不喜欢猫的程序员,es不仅能满足所有的需求,而且能快速的帮你找到。
在使用es之前,建议先看看极客学院的es权威指南
在使用es之前,要在服务器端搭建一个es的集群,因为我是做前端的,所以具体怎么搭建集群我不是很懂,然后把我们需要的数据库的数据导到es环境里就可以用了。我们前端大都是构建es的DSL查询语句,去查询我们需要的东西。
{
"query":{
"match_all":{}
}
}
{
"query":{
"match":{
"name":"小明"
}
}
}
{
"query": {
"match_phrase": {
"name": "小明"
}
}
}
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"name": "小明" }
},
{
"match_phrase": {
"age": "10" }
}
]
}
}
}
{
"from":0,
"size":5,
"query": {
"match_phrase": {
"name": "小明"
}
}
}
{
"from":0,
"size":5,
"query": {
"match_phrase": {
"name": "小明"
}
},
"highlight": {
"pre_tags": [
"<font color=red><b>"
],
"post_tags": [
"</b></font>"
],
"fields": [
{
"name": {}
}
]
}
}
{
"from":0,
"size":5,
"query": {
"match_phrase": {
"name": "小明"
}
},
"sort": {
"_score": {
"order": "desc"
},
"time": {
"order": "desc"
}
}
}
{
"from":0,
"size":5,
"query": {
"match_phrase": {
"name": "小明"
}
},
"aggs": {
"type": {
"terms": {
"field": "_type"
}
}
}
}
{
"from": 0,
"size": "10",
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"range": {
"time_pub": { "gte": "2000-01-01", "lte": "2005-12-31" } }
}
}
}
}
将上面的所有功能结合起来就可以完成查询多个段的关键词,高亮显示,排序,聚类,范围的复合查询
假设我们在这里构建了一条复杂的查询语句
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"name": "小明" }
}
]
}
},
"highlight": {
"pre_tags": [
"<font color=red><b>"
],
"post_tags": [
"</b></font>"
],
"fields": [
{
"name": {}
}
]
},
"sort": {
"_score": {
"order": "desc"
},
"time_pub": {
"order": "desc"
}
},
"size": "5",
"from": 0,
"aggs": {
"type": {
"terms": {
"field": "_type"
}
}
}
}
我们查出了所有name字段中的小明的结果,并做了高亮显示,按照类型聚类查询结果
结果的结构是这样的,”hits”是查询的结果,”total”是结果的总条目,”aggregations”是聚类的结果
“hits”结果部分,”highlight”就是高亮显示了的字段,”sort”是排序的分值
“aggregations”聚类部分,”buckets”是聚类结果,关联数组的形式
只要清楚了它的结构,遍历是很简单的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。