优势:大数据的解析抽离,无需大批量处理工作实现实时特性的分析和聚合
基础:apache Lucene; 全词搜索引擎库;elasticsearch利用lucene提供的能力,提供友好简洁的方式进行
索引和搜索,使用简单的RESTful API隐藏复杂性,实现全词搜索;
分布实时文档存储,分布实实时分析搜索引擎;支持扩展和P级的结构化或非结构化数据;
Node客户端和Tranasport客户端,RESTful API
面向文档:
存储整个对象或文档,对文档的内容进行索引,基本单元是文档;
使用JSON作为文档的串行化格式,将对象转换为JSON以便索引比更加简单;
实例:
在elasticsearch中存储数据的动作称作indexing;
(1)决定在那里存储, elasticsearch集群可以包含多个碎片,轮流保存多个类型
一:每个雇员一个索引文档;
二:每个document的类型employee
三:每个存在megacorp索引下
四:这些索引存储在elasticsearch集群
/index/type/{id}
_search
使用query DSL查询
domain-specific language: JSON request body:
GET /megacorp/employee/_search
{
"query": {
must : {
"match" : {
"last_name" : "Smith"
}
},
"filter" : {
"range" : {
"age" : { "gt" : 30 }
}
}
}
}
全词搜索:
GET /megacorp/employee/_search
JSON数据:
{
query: {
must: {
"about": "rock climbing"
}
}
}
elasticsearch的按照相似度分数排序结果;
关键词:相似度
短语搜索:
GET /megacorp/employee/_search
{
"aggs": {
"all_interests: {
"terms": {"field" : "interests"}
}
}
}
关键词:match_phrase
分析:
GET /megacorp/employee/_search
{
"aggs": {
"all_interests: {
"terms": {"field" : "interests"}
}
}
}
对特定人选的兴趣聚合
GET /megacorp/employee/_search
{
"query" : {
"must" : {
"last_name" : "smith"
}
},
"aggs": {
"all_interests" : {
"field" : "interests"
}
}
}
求出平均年龄
/GET /megacorp/employee/_search
{
"aggs" : {
"all_interests": {
"terms": {"field": "interests"},
"aggs": {
"avg_age": {
"avg" : {"field": "age"}
}
}
}
}
}