java - 在调用 ElasticSearch API 之前预处理输入文本

标签 java elasticsearch

我有一个 Java 客户端,允许在本地 ElasticSearch 服务器上对文档建立索引。 我现在想要构建一个简单的 Web UI,允许用户通过在表单中​​输入一些文本来查询 ES 索引。

我的问题是,在调用 ES API 发出查询之前,我想通过调用一些 Java 代码来预处理用户输入。

实现这一目标的最简单且“最干净”的方法是什么?

  • 我应该创建自己的 API 以便 UI 可以访问我的 Java 代码吗?
  • 我应该使用 JSP 构建 UI,以便可以直接调用我的 Java 代码?
  • 我可以以某种方式让 ElasticSearch 之前执行我的 Java 代码吗 查询被执行? (也许通过创建我自己的 ElasticSearch 插件?)

最佳答案

最终,我选择了使用基于 Json 的 RESTful API 的简单解决方案。时间证明这对我的案例来说非常灵活和有效,所以我想我应该分享它:

  1. 我的 Java 代码通过运行 HTTP 服务器并使用 Json 格式的 ES 结果响应客户端请求,公开了查询 ElasticSearch 索引的能力。我使用 sun.net.HttpServer 用几行代码创建了 HTTP 服务器。 。那里有更严重/复杂的 HTTP 服务器(例如 Tomcat ),但这很快就被采用并且需要零配置麻烦。
  2. 我的 Web UI 向 Java 服务器发出 HTTP GET 请求,接收 Json 格式的数据并愉快地使用它。我的 UI 是用 PHP 实现的,但任何 Web 语言都可以完成这项工作,只要您可以发出 HTTP 请求即可。

这个解决方案在我的例子中效果非常好,因为它允许不依赖于 ES 插件。我可以在调用 ES 之前进行任何类型的预处理,甚至可以在将结果发送回 UI 之前对 ES 输出进行后处理。

关于java - 在调用 ElasticSearch API 之前预处理输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31669068/

相关文章:

java - mvn 执行 :java on aggregate pom

elasticsearch - 如何在Joyent上将Elasticsearch设置为服务

elasticsearch - 使用弹性堆栈可视化kibana中的网站使用情况

python - 使用 python 在 Elasticsearch 中批量部分更新插入

elasticsearch - 格式错误时的ElasticSearch映射和默认值

java - 非法尝试将集合与两个打开的 session 相关联

java - 如何使用 WicketTester 查询元素(组件)的文本?

java - 为什么我的 Java Web 应用程序找不到 .bat 文件?

java - 安卓转接电话

elasticsearch - Elasticsearch DSL用于2个时间戳之间的所有空值