我有一个需要使用ElasticSearch的网络应用,但我的主机不允许使用Java应用。
可以将ElasticSearch服务器放在其他计算机(Remote)上,以便webapp将查询发送到远程服务器吗?如果是,ElasticSearch可以通过某种方式保护ElasticSearch服务器中的数据?如何保护其他用户对此远程ElasticSearch服务器进行查询?
最诚挚的问候,
答案 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>