可以远程使用Elasticsearch吗?

时间:2013-09-16 15:27:53

标签: elasticsearch pyelasticsearch

我有一个需要使用ElasticSearch的网络应用,但我的主机不允许使用Java应用。

可以将ElasticSearch服务器放在其他计算机(Remote)上,以便webapp将查询发送到远程服务器吗?如果是,ElasticSearch可以通过某种方式保护ElasticSearch服务器中的数据?如何保护其他用户对此远程ElasticSearch服务器进行查询?

最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

是。如果您没有将应用程序移动到允许Java的其他服务器的选项,则可以使用JSON调用访问远程服务器,或者如果适用于您的平台(http://www.elasticsearch.org/guide/en/elasticsearch/client/community/current/clients.html),则可以访问客户端。

为了确保安全,您可以安装jetty插件(https://github.com/sonian/elasticsearch-jetty),配置SSL,身份验证以及添加IP限制,例如创建带有内容的jetty-iprestriction.xml并添加对它的引用在elasticsearch.yml。

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure id="ESServer" class="org.eclipse.jetty.server.Server">


<Set name="handler">
  <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
    <Set name="handlers">
     <Array type="org.eclipse.jetty.server.Handler">
   <Item>

     <New class="org.eclipse.jetty.server.handler.IPAccessHandler">
       <Call name="addWhite">
         <!-- allowed server ip -->
         <Arg>xxx.xxx.xxx.xxx</Arg>
       </Call>
      <Set name="handler">
       <New class="com.sonian.elasticsearch.http.jetty.handler.JettyHttpServerTransportHandler"
             id="HttpServerAdapterHandler">
            <Set name="transport"><Ref id="ESServerTransport"/></Set>
        </New>
       </Set>
     </New>

   </Item>
       <Item>
         <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
       </Item>
       <Item>
         <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
       </Item>
     </Array>
    </Set>
  </New>
</Set>

</Configure>