使用servlet连接到Elasticsearch

时间:2015-10-15 13:31:40

标签: servlets elasticsearch

elasticsearch-transport-wares

我不明白,如何使用这个插件...

我想使用servlet去连接elasticsearch并运行......

我的环境只有apache tomcat servlet,请帮帮我,谢谢。

1 个答案:

答案 0 :(得分:1)

您的想法是通过添加以下依赖项来修改您的Maven pom.xml(请确保使用right version,具体取决于您正在运行的ES的版本):

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch-transport-wares</artifactId>
    <version>2.7.0</version>
</dependency>

elasticsearch-transport-wares的JAR文件最终会出现在WEB-INF/lib文件夹中。

然后在web.xml中添加新的<servlet><servlet-mapping>,如下所示:

<servlet>
  <servlet-name>esnode</servlet-name>
  <servlet-class>org.elasticsearch.wares.NodeServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>esnode</servlet-name>
  <url-pattern>/es/*</url-pattern>         <---- you can change this pattern
</servlet-mapping>

这将实例化一个新的servlet,为http://server:8080/es/路径上的请求提供服务,并将它们代理到您的本地嵌入式Elasticsearch节点,这意味着您可以通过您的Web应用程序查询ES,例如:

curl -XGET http://server:8080/es/your_index/your_type/_search?q=*

上述查询等同于直接使用

查询外部ES群集
curl -XGET http://localhost:9200/your_index/your_type/_search?q=*

主要区别在于,您还可以通过检索已在servlet上下文中创建的Elasticsearch节点,使用以下内容从Web应用程序中的任何位置内部查询ES(您可以访问ServletContext): / p>

Node node = getServletContext().getAttribute("elasticsearchNode")

最后,您可以为您的节点存储/WEB-INF/elasticsearch.json/WEB-INF/elasticsearch.yml中的Elasticsearch配置。