原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-analyze.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../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中搜索genderage字段,并将匹配的结果按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)功能在数据中创建正常行为的精确基线,并识别异常模式。 通过机器学习,可以检测到:

  • 与数值、计数或频率的时间偏差有关的异常
  • 统计稀有性
  • 群体成员中的不寻常行为

最好的部分是什么? 你不必指定算法、模型或其他与数据科学相关的配置就可以做到这一点。