ELasticSearch
基础语法
索引一个员工文档
PUT / megacorp/ employee/ 1
{
"first_name" : "John" ,
"last_time" : "Smith" ,
"age" : 25 ,
"about" : "I love to go rock climbing" ,
"interests" : [ "sport" , "music" ]
}
# Megacorp : 索引名称
# Employee: 类型名称
# 1 : 特定雇员的ID
# 请求体:JSON 文档 ,包含了这位员工的所有详细信息,他的名字叫John Smith,今年25 岁,喜欢攀岩
检索文档
GET / megacorp/ employee/ 1 #得到员工1 的信息
GET / megacorp/ employee/ _search #检索所有雇员
GET / megacorp/ employee/ _search? q= last_name: Smith #检索姓氏为Smith的雇员
使用查询表达式搜索
# 检索姓氏为Smith的雇员
GET / megacorp/ employee/ _search
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}
# 检索姓氏为Smith并且年龄大于30 的雇员
GET / megacorp/ employee/ _search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"last_name" : "Smith"
}
} ,
"filter" : {
"range" : {
"age" : { "gt" : 30 }
}
}
}
}
}
短语搜索
# 检索仅包含”rock“和”climbing“ , 并且二者以短语”rock climbing“的形式紧挨着的雇员
GET / megacorp/ employee/ _search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}
高亮搜索
# 把about字段高亮显示
GET / megacorp/ employee/ _search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
} ,
"highlight" : {
"fields" : {
"about" : { }
}
}
}
聚合搜索
# 找出雇员中最受欢迎的爱好
GET / megrcorp/ employee/ _search
{
"aggs" : {
"all_interests" : {
"terms" : { "field" : "interests" }
}
}
}