对于与数据存储相关的操作(例如索引、更新、重新索引或删除),Elasticsearch 提供了一个记录良好的 REST API,其中包含对各个操作的一系列调用。您可以轻松地将这些集成到您的应用程序中,然后解决它们 - 例如在批处理作业中或通过事件流/事件监听。但是,根据所使用的框架、库或现有软件,您应该寻找现有的解决方案。 “故障保存”流程所需的工作通常是巨大的。
以下调用向您展示了如何使用 POST 请求对文章进行索引:
此时可能需要注意:在 Elasticsearch 中创建记录时,“记录 ID”应始终引用您想要索引的条目。这样,您还可以事后对个别数据进行适当的更新或删除。
正确理解和映射数据
使用上述示例调用对数据集建立索引也是可能的,无需任何进一步的操作或 民主捐助者电子邮件列表 了解数据结构 - 例如字段类型、字段长度或有关单个字段是否应实际建立索引的信息。在这种情况下,Elasticsearch 将简单地使用标准映射,但这在搜索命中质量和索引存储大小方面会有一些缺点。
如以下摘录所示,并在创建映射时使用它来索引数据,那就更好了。首先,确定字段的数据类型并将其包含在映射中非常重要。在这里您可以区分“日期”、“长整型”、“关键字”或“文本”,其中“关键字”数据类型通常用于要过滤的数据字段。例如,在我们的摘录中,这将是属性“大小”。
所谓分析器的定义在“搜索结果质量”方面带来了许多优势:使用小写、german_stemmer 或 german_normalization,即使用户输入错误,也会显示正确的搜索结果。如果您使用 NGram 分析器,用户仅输入部分搜索词也会找到结果。
搜寻
现在进行实际搜索:当然,Elasticsearch 还提供 REST 端点,我在下一个示例中将其定义为示例。为了获得结果列表的相应维度或方面,您必须对结果进行一定程度的分组。 Elasticsearch 有两种方法来执行此过程:
Facets,一种更古老、更简单的方法
聚合,Facets 的继承者
后者也用在下面所示的示例中。设置为“尺码”属性的过滤器仅显示 XL 尺码的结果。
在查询正文中,除了我们的搜索词之外,还可以定义各种选项,以便根据您的想法格式化搜索结果。如示例中所使用的,这包括用于分页(起始或大小)或用于在各个搜索结果中标记搜索项(突出显示)的选项。
搜索结果
与其他标准 REST API 一样,先前定义的搜索查询的搜索结果以 JSON 形式返回,并且除了结果之外,还包含其他有趣的属性和信息。当然,这里只输出以下内容:
在查询期间指定并根据您自己的定义进行相应格式化的数据字段(fragment_size、number_of_fragments 等)。
用荧光笔标记的搜索词
通过这种方式,您可以节省客户端昂贵的渲染费用。此外,您还可以在搜索结果中找到属性的不同方面,并查看各个方面的点击次数。
结论
正如您所看到的,Elasticsearch 具有标准化且描述良好的接口来实现过滤或搜索功能。您还可以在互联网上找到各种应用示例。但您不应该低估总的工作量,因为我描述的示例仅显示了一个案例的摘录。在我看来,在实施之前,您应该始终评估是否有一个库或相应的工具集适合您自己的堆栈并减轻您的工作 - 例如在 Elasticsearch 中索引数据时。在任何情况下,您都不应该尝试使用 Elasticsearch 作为一种持久存储。无法 100% 保证数据保持可用 - 无论是在存储或集群交换机出现问题时。
您想了解更多有关令人兴奋的 IT 主题的信息吗?然后看看我们之前发布的博客文章
图像 Rico Krause
作者 里科·克劳斯
Rico Krause 是汉堡 adesso 的项目经理,过去担任软件开发人员多年,并没有失去对它的迷恋。
类别: 软件开发
标签: 软件开发 信息技术项目
阿斯达夫
我们的博客文章一览
在我们的技术博客中,我们将带您踏上令人兴奋的 adesso 世界之旅。您可以在我们之前的博客文章中找到其他有趣的主题。