1、DSL语句查询
ElasticSearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。
DSL(Domain Specific Language)特定领域语言)以JSON请求体的形式出现。(以下搜索语句总index表示你的index名称,type表示你的type名称)
例如要查找名字为“Jack”的文档:
GET /index/type/_search
{
"query":{
"match":{
"name":"Jack"
}
}
}
2、复杂搜索
如果我们需要查询名字为“Jack”且年龄大于30的文档。可以通过添加过滤器(filter),它使得我们高效率的执行一个结构化搜索:
GET /index/type/_search
{
"query":{
"filtered":{
"filter":{
"range":{
"age":{"gt":30}
}
}
},
"query":{
"match":{
"name":"Jack"
}
}
}
}
了解过MongoDB的同学可以发现,ElasticSearch的搜索方式和MongoDB的查询方式非常相似。
3、全文检索
例如我们要搜索文档中包含“basketball"的数据。
GET /index/type/_search
{
"query":{
"match":{
"about":"backetball"
}
}
}
4、短语搜索
例如我们需要查询同时包含basket和ball的记录
GET /index/type/_search
{
"query":{
"match_phrase":{
"about":"basket ball"
}
}
}
5、高亮搜索结果
很多应用喜欢高亮匹配到的关键字,这用用户可以知道为什么这些文档和查询相匹配。ElasticSearch高亮设置:
GET /index/type/_search
{
"query":{
"match_phrase":{
"about":"basket ball"
}
},
"highlight":{
"fields":{
"about":{}
}
}
}