本地英文版地址: ../en/search-analyze.html
虽然你可以使用 Elasticsearch 作为文档存储器并检索文档及其元数据,但其真正的强大之处在于能够轻松地访问构建于 Apache Lucene 搜索引擎之上的整套搜索功能。
ElasticSearch 提供了一个简单、易于理解的 REST API,用于管理集群、索引和搜索数据。 出于测试目的,你可以直接从命令行或通过Kibana的开发人员控制台发送请求,这很简单。 对于应用程序,你可以使用你所使用的语言的 Elasticsearch 客户端:Java、JavaScript、Go、.NET、PHP、Perl、Python 或 Ruby。
搜索数据
Elasticsearch REST API支持结构化查询、全文查询以及二者皆有的复杂查询。
结构化查询类似于你可以在 SQL 中构造的查询类型。
比如,你可能会在索引employee
中搜索gender
和age
字段,并将匹配的结果按hire_date
字段排序。
全文搜索查找与查询字符串匹配的所有文档,并按相关性 - 文档与搜索词的匹配程度 - 排序。
除了搜索单个词之外,还可以执行短语(phrase)搜索、相似(similarity)搜索和前缀(prefix)搜索,以及获取自动完成(autocomplete)的建议。
想要搜索地理空间或其他数值数据? Elasticsearch 以优化的数据结构对非文本数据进行索引,支持高性能的地理和数值查询。
你可以使用 Elasticsearch 提供的功能全面的 JSON 风格的查询语言Query DSL来访问所有这些搜索功能。 你还可以构造SQL风格的查询来搜索和聚合数据, 这是 Elasticsearch 内部原生支持的;JDBC 和 ODBC 驱动程序允许广泛的第三方应用程序通过 SQL 与 Elasticsearch 进行交互。
分析数据
Elasticsearch 聚合使你能够构建复杂的数据摘要,并深入了解关键度量、模式和趋势。 不仅能“大海捞针”,聚合还能回答以下问题:
- 干草堆(也可以说"大海")里有多少根针?
- 针的平均长度是多少?
- 每个供应商的针的长度的中位数是多少?
- 在过去的六个月里,每个月有多少根针被加到干草堆里?
你还可以使用聚合来回答更微妙的问题,例如:
- 最受欢迎的针的制造商是哪几家?
- 有无异常或反常的针团?
因为聚合使用了与搜索相同的数据结构,所以它们也非常快。 这使你能够实时分析和可视化数据。 你的报表和仪表板会随着数据的变化而更新,这样你就可以根据最新的信息采取行动。
此外,聚合是与搜索请求一起运行的。 你可以在单个请求中对相同的数据同时搜索文档、过滤结果和执行分析。 因为 聚合是在特定搜索的上下文中计算出来的,所以不仅显示了所有70号大小的针的数量,还显示了符合用户搜索条件的70号大小的针的数量 —— 例如,所有70号大小的non-stick embroidery针。
等等,还有更多
想要自动分析 时间序列(time-series) 数据吗? 你可以使用机器学习(machine learning)功能在数据中创建正常行为的精确基线,并识别异常模式。 通过机器学习,可以检测到:
- 与数值、计数或频率的时间偏差有关的异常
- 统计稀有性
- 群体成员中的不寻常行为
最好的部分是什么? 你不必指定算法、模型或其他与数据科学相关的配置就可以做到这一点。