sumannewton opened a new pull request, #177:
URL: https://github.com/apache/ranger/pull/177

   Lets say for ranger audit, we configure an elasticsearch alias(rollover 
alias). And if there are 2 or more indices for an alias then audit API doesn't 
work. Because while fetching the records, ranger uses multi get request on an 
alias. 
   It results in below error:
   ```
   Alias [alias-name] has more than one indices associated with it 
[[index-000002, index-000001]], can't execute a single index op
   ```
   
   [Code 
snippet](https://github.com/apache/ranger/blob/6c8a142881896f2c6d1696bcee02c401867a45f9/security-admin/src/main/java/org/apache/ranger/elasticsearch/ElasticSearchUtil.java#L175-L180):
   ```
           MultiGetRequest multiGetRequest = new MultiGetRequest();
           for (SearchHit hit : hits) {
               MultiGetRequest.Item item = new MultiGetRequest.Item(index, 
null, hit.getId());
               item.fetchSourceContext(FetchSourceContext.FETCH_SOURCE);
               multiGetRequest.add(item);
           }
   ```
   
   So there can be 2 possible approaches to resolve this:
   
   - #### Approach 1(Quick and fast) [THIS MERGE REQUEST HAS THIS FIX]:
   Use hit.getIndex() instead of index(in this case its has alias) for a 
MultiGetRequest.Item object.
   So that all the documents can be get by id with its index only instead of 
alias.
   
   - #### Approach 2(Change the MultiGet to search) [NOT PART OF THIS MERGE 
REQUEST]:
   ```
   POST /_search
   {
       "query": {
           "ids" : {
               "values" : ["id1", "id2"]
           }
       }
   }
   ```
   
   Please review.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to