我有一个 Java 客户端,允许在本地 ElasticSearch 服务器上对文档建立索引。 我现在想要构建一个简单的 Web UI,允许用户通过在表单中输入一些文本来查询 ES 索引。
我的问题是,在调用 ES API 发出查询之前,我想通过调用一些 Java 代码来预处理用户输入。
实现这一目标的最简单且“最干净”的方法是什么?
- 我应该创建自己的 API 以便 UI 可以访问我的 Java 代码吗?
- 我应该使用 JSP 构建 UI,以便可以直接调用我的 Java 代码?
- 我可以以某种方式让 ElasticSearch 之前执行我的 Java 代码吗 查询被执行? (也许通过创建我自己的 ElasticSearch 插件?)
最佳答案
最终,我选择了使用基于 Json 的 RESTful API 的简单解决方案。时间证明这对我的案例来说非常灵活和有效,所以我想我应该分享它:
- 我的 Java 代码通过运行 HTTP 服务器并使用 Json 格式的 ES 结果响应客户端请求,公开了查询 ElasticSearch 索引的能力。我使用 sun.net.HttpServer 用几行代码创建了 HTTP 服务器。 。那里有更严重/复杂的 HTTP 服务器(例如 Tomcat ),但这很快就被采用并且需要零配置麻烦。
- 我的 Web UI 向 Java 服务器发出 HTTP GET 请求,接收 Json 格式的数据并愉快地使用它。我的 UI 是用 PHP 实现的,但任何 Web 语言都可以完成这项工作,只要您可以发出 HTTP 请求即可。
这个解决方案在我的例子中效果非常好,因为它允许不依赖于 ES 插件。我可以在调用 ES 之前进行任何类型的预处理,甚至可以在将结果发送回 UI 之前对 ES 输出进行后处理。
关于java - 在调用 ElasticSearch API 之前预处理输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31669068/