クエリを実行したいelasticsearchサーバーがありますが、ユーザーに結果を表示する前に、結果をフィルタリングしたい(データベースなどでユーザーの権利を検索する)
そこで、JSON POST 検索リクエストを受け取り、これを Elasticsearch サーバーにリダイレクトするプロキシ サーバーを作成することにしました。結果を含む応答が「フィルター サーバー」に送信されるようになりました。このサーバーは、受信した json データをデータベースで検索し、ユーザーが表示できない結果を削除します。このフィルタリングされたコンテンツは、ユーザーに提示する必要があります。
わかりました-これは私がやったことです:
var proxy = http.createServer(function (req, res){
if(req.method == 'OPTIONS'){
res.writeHead(200, {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset=UTF-8'});
res.end();
}
if(req.method == 'POST'){
var searchOptions = {
host: '10.0.10.1',
port: 9200,
method: 'POST',
path: '/ltg_5096/_search'
}
var searchRequest = http.request(searchOptions, function(searchResponse){
// this is the Request to the Elasticsearch Server...
var filterOptions = {
host: '127.0.0.1',
port: 8080,
method: 'POST',
path: '/',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
var filterRequest = http.request(filterOptions, function(filterResponse){
// ?! This should be the request to the filter Server
})
searchResponse.pipe(res)
res.writeHead(200, {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset=UTF-8'})
})
req.pipe(searchRequest)
}
})
proxy.listen(9000)
これはプロキシ サーバーですが、フィルタリング インスタンスによって結果がフィルタリングされる部分はありません。いろいろ試してみましたが、思うように動かせませんでした。誰かがこれで私を助けてくれることを願っています!