0

ElasticSearch を使用する必要がある Web アプリがありますが、私のホストは Java アプリの使用を許可していません。

webapp がリモート サーバーにクエリを実行するように、ElasticSearch サーバーを他のマシン (リモート) に配置することは可能ですか? はいの場合、ElasticSearch には ElasticSearch サーバー内のデータを保護する何らかの方法がありますか? 他のユーザーがこのリモート ElasticSearch サーバーに対してクエリを実行できないようにするにはどうすればよいですか?

よろしくお願いします、

4

1 に答える 1

0

はい。Java を許可する別のサーバーにアプリケーションを移動するオプションがない場合は、JSON 呼び出しを使用してリモート サーバーにアクセスするか、プラットフォームで使用可能な場合はクライアントを使用できます ( http://www.elasticsearch.org/guide/en /elasticsearch/client/community/current/clients.html )。

物事を安全にするために、jetty プラグイン ( https://github.com/sonian/elasticsearch-jetty ) をインストールし、SSL と認証を構成し、以下の内容で jetty-iprestriction.xml を作成するなどの IP 制限を追加することができます。 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>
于 2013-10-08T12:34:35.210 に答える