public static Client prepareDefaultClient(Client client) { return prepareClient(client, QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_READ_ALIAS, QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_INDEX); } }
public ElasticSearchQuotaSearcher(Client client, ReadAliasName readAlias) { this.client = client; this.readAlias = readAlias; this.quotaQueryConverter = new QuotaQueryConverter(); }
public QueryBuilder from(QuotaQuery query) { List<QuotaClause> clauses = query.getClause().getClauses(); if (clauses.isEmpty()) { return matchAllQuery(); } if (clauses.size() == 1) { return singleClauseAsESQuery(clauses.get(0)); } return clausesAsAndESQuery(clauses); }
@Test void fromShouldReturnMatchAllWhenEmptyClauses() { QuotaQuery query = QuotaQuery.builder().build(); QueryBuilder expected = matchAllQuery(); QueryBuilder actual = testee.from(query); assertThat(actual).isEqualToComparingFieldByField(expected); }
@Override public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { try { Client client = QuotaSearchIndexCreationUtil.prepareDefaultClient( new TestingClientProvider(embeddedElasticSearch.getNode()).get()); usersRepository.setDomainList(domainList); ElasticSearchQuotaMailboxListener listener = new ElasticSearchQuotaMailboxListener( new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(), QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE), new QuotaRatioToElasticSearchJson()); resources.getQuotaManager(), resources.getQuotaRootResolver(), new ElasticSearchQuotaSearcher(client, QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_READ_ALIAS), usersRepository,
@Before public void setUp() { client = QuotaSearchIndexCreationUtil.prepareDefaultClient( new TestingClientProvider(embeddedElasticSearch.getNode()).get()); quotaMailboxListener = new ElasticSearchQuotaMailboxListener( new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(), QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE, BATCH_SIZE), new QuotaRatioToElasticSearchJson()); }
public static Client prepareClient(Client client, AliasName readAlias, AliasName writeAlias, IndexName indexName) { return NodeMappingFactory.applyMapping( new IndexCreationFactory() .useIndex(indexName) .addAlias(readAlias) .addAlias(writeAlias) .createIndexAndAliases(client), indexName, QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE, QuotaRatioMappingFactory.getMappingContent()); }
@Override public List<User> search(QuotaQuery query) { Stream<User> results = new ScrollIterable(client, prepareSearch(query)) .stream() .flatMap(searchResponse -> Arrays.stream(searchResponse.getHits() .getHits())) .map(hit -> hit.field(USER)) .map(field -> (String) field.getValue()) .map(User::fromUsername) .skip(query.getOffset().getValue()); return query.getLimit().getValue() .map(results::limit) .orElse(results) .collect(Guavate.toImmutableList()); }
public SearchRequestBuilder prepareSearch(QuotaQuery query) { SearchRequestBuilder searchRequestBuilder = client.prepareSearch(readAlias.getValue()) .setTypes(QUOTA_RATIO_TYPE.getValue()) .setScroll(TIMEOUT) .addFields(USER) .setQuery(quotaQueryConverter.from(query)); query.getLimit() .getValue() .ifPresent(searchRequestBuilder::setSize); searchRequestBuilder.addSort( SortBuilders.fieldSort(USER) .order(SortOrder.ASC)); return searchRequestBuilder; }
@BeforeEach void setup() { testee = new QuotaQueryConverter(); }
@Test void fromShouldReturnDomainMatchWhenOnlyDomain() { QuotaQuery query = QuotaQuery.builder().hasDomain(Domain.of("my.tld")).build(); QueryBuilder expected = termQuery(JsonMessageConstants.DOMAIN, "my.tld"); QueryBuilder actual = testee.from(query); assertThat(actual).isEqualToComparingFieldByField(expected); }
@Test void fromShouldReturnQuotaRatioMatchWhenLessThan() { QuotaQuery query = QuotaQuery.builder().lessThan(new QuotaBoundary(0.1)).build(); QueryBuilder expected = rangeQuery(QUOTA_RATIO).lte(0.1); QueryBuilder actual = testee.from(query); assertThat(actual).isEqualToComparingFieldByField(expected); }
@Test void fromShouldReturnQuotaRatioMatchWhenMoreThan() { QuotaQuery query = QuotaQuery.builder().moreThan(new QuotaBoundary(0.1)).build(); QueryBuilder expected = rangeQuery(QUOTA_RATIO).gte(0.1); QueryBuilder actual = testee.from(query); assertThat(actual).isEqualToComparingFieldByField(expected); }