2015-10-15 67 views

回答

1

的想法是,通過添加以下依賴修改你的Maven pom.xml(請務必使用right version取決於ES你的版本正在運行):elasticsearch-的

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

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> 

這將實例化http://server:8080/es/路徑上的服務請求,並將其代理到本地嵌入式Elasticsearch節點,這意味着一個新的Servlet你可以通過你的Web應用程序查詢ES,.eg:

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):

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

最後,您可以爲您的節點存儲Elasticsearch配置,即/WEB-INF/elasticsearch.json/WEB-INF/elasticsearch.yml

+0

你有這個機會嗎? – Val