Elasticsearch查询与分析

虽然你可以使用ES存储文档、提取文档和元数据,但其真正的强大之处在于能够轻松访问构建在Apache Lucene搜索引擎库上的全套搜索功能。

ES提供了一套简单的,有逻辑的Restful Api来管理你的集群和索引。以及搜索你的数据。如果需要测试,你只需要通过命令行或者通过Kibana上的开发者平台发送请求。对于应用,可以直接使用Elasticsearc Client

搜索你的数据

ES的Rest Api支持结构化查询,全文查询,或者是两个查询联合的复杂查询。结构化查询与你用SQL构造出来的查询类型,比如,你可以在employee索引中搜索genderage 字段并且根据hire_date进行排序。全文检索就是找到那些跟查询字符串匹配的文档并且根据相关性(文档与搜索条目的匹配程度)进行排序。

除了搜索单个术语外,你还可以执行短语搜索,相似性搜索和前缀搜索,并获得自动完成建议。

如果想搜索地理数据或者其他数字类型的数据怎么办?ES将这些非文本数据存放在优化后的数据结构中以满足高性能的地理数据和数字类型的查询。

通过ES详尽的JSON格式的查询,你可以体验所有的搜索功能。你也可以通过构造SQL样式的查询在ES内部搜索并聚合本地数据,而JDBC和ODBC驱动程序使得一大批第三方程序可以通过SQL来和ES进行交互。

分析你的数据

ES聚合功能使你可以构建复杂的数据摘要并深入了解关键指标、模式和趋势。不同于大海捞针,聚合功能可以回答一些类型下面的问题:

  • 海里面有多少针?
  • 针的平均长度是多少?
  • 针的长度中位数是多少?按制造商划分后呢?
  • 在过去的六个月中,海里面增加了多少根针?

你也可以利用聚合来回答一些不易察觉的问题,例如:

  • 哪家针的制造商最受欢迎?
  • 是否有一批针是不正常的?

因为聚合利用了用于搜索的相同的数据结构,所以它们也非常快,这使得你可以实时的分析和可视化你的数据。你的reportdashboard会根据数据的变化而进行更新,所以你可以根据最新的信息来采取行动。

更重要的是,聚合是与搜索请求一起运行的。在同一份数据上,在单个请求上,你可以同时搜索文档,过滤结果并进行分析。由于聚合是在特定搜素的上下问中计算的,一次你不仅会显示所有70号针的计数,还显示了用户搜索条件匹配的70号针的计数——例如所有70号针的不绣针。

更多性能

想使你的流数据分析自动化?你可以使用机器学习特性在你的数据中创建正常行为的精确基线,并识别异常模式,通过机器学习,你可以检测:

  • 与值、计数或者频率的时间偏差有关的异常
  • 统计稀有度
  • 种群成员的异常行为

最好的部分是在不指定算法、模型或者其他数据科学相关配置的情况下完成此工作。

原文