use of org.graylog2.indexer.searches.Searches in project graylog2-server by Graylog2.
the class SearchesTest method setUp.
@Before
public void setUp() throws Exception {
when(indexRangeService.find(any(DateTime.class), any(DateTime.class))).thenReturn(INDEX_RANGES);
metricRegistry = new MetricRegistry();
searches = new Searches(new Configuration(), indexRangeService, client, metricRegistry, streamService, mock(Indices.class));
}
use of org.graylog2.indexer.searches.Searches in project graylog2-server by Graylog2.
the class V20190304102700_MigrateMessageListStructure method findSearchTypIds.
private List<String> findSearchTypIds(String stateId, String searchId, List<String> widgetMappingSearchTypeIds) {
final BasicDBObject dbQuery = new BasicDBObject();
dbQuery.put("_id", new ObjectId(searchId));
final FindIterable<Document> searches = this.searchCollections.find(dbQuery);
/* There can be only one search with matching id */
assert this.searchCollections.count(dbQuery) == 1;
final Document search = searches.first();
final List<String> searchTypeId = new ArrayList<>();
@SuppressWarnings("unchecked") final List<Document> queries = (ArrayList) search.get("queries");
for (final Document query : queries) {
if (query.getString("id").equals(stateId)) {
@SuppressWarnings("unchecked") final List<Document> searchTypes = (ArrayList) query.get("search_types");
searchTypeId.addAll(searchTypes.stream().map(searchType -> searchType.getString("id")).filter(search_id -> !widgetMappingSearchTypeIds.contains(search_id)).collect(Collectors.toList()));
}
}
return searchTypeId;
}
use of org.graylog2.indexer.searches.Searches in project graylog2-server by Graylog2.
the class V20151210140600_ElasticsearchConfigMigration method upgrade.
// Migrate old Elasticsearch config settings to new ClusterConfig based ones.
@Override
public void upgrade() {
// All default rotation strategy settings.
final MessageCountRotationStrategyConfig messageCountRotationStrategyConfig = clusterConfigService.get(MessageCountRotationStrategyConfig.class);
final SizeBasedRotationStrategyConfig sizeBasedRotationStrategyConfig = clusterConfigService.get(SizeBasedRotationStrategyConfig.class);
final TimeBasedRotationStrategyConfig timeBasedRotationStrategyConfig = clusterConfigService.get(TimeBasedRotationStrategyConfig.class);
if (messageCountRotationStrategyConfig == null) {
final MessageCountRotationStrategyConfig countConfig = MessageCountRotationStrategyConfig.create(elasticsearchConfiguration.getMaxDocsPerIndex());
clusterConfigService.write(countConfig);
LOG.info("Migrated \"{}\" setting: {}", "elasticsearch_max_docs_per_index", countConfig);
}
if (sizeBasedRotationStrategyConfig == null) {
final SizeBasedRotationStrategyConfig sizeConfig = SizeBasedRotationStrategyConfig.create(elasticsearchConfiguration.getMaxSizePerIndex());
clusterConfigService.write(sizeConfig);
LOG.info("Migrated \"{}\" setting: {}", "elasticsearch_max_size_per_index", sizeConfig);
}
if (timeBasedRotationStrategyConfig == null) {
final TimeBasedRotationStrategyConfig timeConfig = TimeBasedRotationStrategyConfig.create(elasticsearchConfiguration.getMaxTimePerIndex(), elasticsearchConfiguration.getMaxWriteIndexAge());
clusterConfigService.write(timeConfig);
LOG.info("Migrated \"{}\" setting: {}", "elasticsearch_max_time_per_index", timeConfig);
}
// All default retention strategy settings
final ClosingRetentionStrategyConfig closingRetentionStrategyConfig = clusterConfigService.get(ClosingRetentionStrategyConfig.class);
final DeletionRetentionStrategyConfig deletionRetentionStrategyConfig = clusterConfigService.get(DeletionRetentionStrategyConfig.class);
if (closingRetentionStrategyConfig == null) {
final ClosingRetentionStrategyConfig closingConfig = ClosingRetentionStrategyConfig.create(elasticsearchConfiguration.getMaxNumberOfIndices());
clusterConfigService.write(closingConfig);
LOG.info("Migrated \"{}\" setting: {}", "elasticsearch_max_number_of_indices", closingConfig);
}
if (deletionRetentionStrategyConfig == null) {
final DeletionRetentionStrategyConfig deletionConfig = DeletionRetentionStrategyConfig.create(elasticsearchConfiguration.getMaxNumberOfIndices());
clusterConfigService.write(deletionConfig);
LOG.info("Migrated \"{}\" setting: {}", "elasticsearch_max_number_of_indices", deletionConfig);
}
// Selected rotation and retention strategies.
final IndexManagementConfig indexManagementConfig = clusterConfigService.get(IndexManagementConfig.class);
if (indexManagementConfig == null) {
final Class<? extends RotationStrategy> rotationStrategyClass;
switch(elasticsearchConfiguration.getRotationStrategy()) {
case "size":
rotationStrategyClass = SizeBasedRotationStrategy.class;
break;
case "time":
rotationStrategyClass = TimeBasedRotationStrategy.class;
break;
case "count":
rotationStrategyClass = MessageCountRotationStrategy.class;
break;
default:
LOG.warn("Unknown retention strategy \"{}\"", elasticsearchConfiguration.getRotationStrategy());
rotationStrategyClass = MessageCountRotationStrategy.class;
}
final Class<? extends RetentionStrategy> retentionStrategyClass;
switch(elasticsearchConfiguration.getRetentionStrategy()) {
case "close":
retentionStrategyClass = ClosingRetentionStrategy.class;
break;
case "delete":
retentionStrategyClass = DeletionRetentionStrategy.class;
break;
default:
LOG.warn("Unknown retention strategy \"{}\"", elasticsearchConfiguration.getRetentionStrategy());
retentionStrategyClass = DeletionRetentionStrategy.class;
}
final IndexManagementConfig config = IndexManagementConfig.create(rotationStrategyClass.getCanonicalName(), retentionStrategyClass.getCanonicalName());
clusterConfigService.write(config);
LOG.info("Migrated \"{}\" and \"{}\" setting: {}", "rotation_strategy", "retention_strategy", config);
}
final SearchesClusterConfig searchesClusterConfig = clusterConfigService.get(SearchesClusterConfig.class);
if (searchesClusterConfig == null) {
final SearchesClusterConfig config = SearchesClusterConfig.createDefault();
LOG.info("Creating searches cluster config: {}", config);
clusterConfigService.write(config);
}
}
use of org.graylog2.indexer.searches.Searches in project graylog2-server by Graylog2.
the class ViewsResource method validateIntegrity.
private void validateIntegrity(ViewDTO dto, SearchUser searchUser) {
final Search search = searchDomain.getForUser(dto.searchId(), searchUser).orElseThrow(() -> new BadRequestException("Search " + dto.searchId() + " not available"));
final Set<String> searchQueries = search.queries().stream().map(Query::id).collect(Collectors.toSet());
final Set<String> stateQueries = dto.state().keySet();
if (!searchQueries.containsAll(stateQueries)) {
final Sets.SetView<String> diff = Sets.difference(searchQueries, stateQueries);
throw new BadRequestException("Search queries do not correspond to view/state queries, missing query IDs: " + diff);
}
final Set<String> searchTypes = search.queries().stream().flatMap(q -> q.searchTypes().stream()).map(SearchType::id).collect(Collectors.toSet());
final Set<String> stateTypes = dto.state().values().stream().flatMap(v -> v.widgetMapping().values().stream()).flatMap(Collection::stream).collect(Collectors.toSet());
if (!searchTypes.containsAll(stateTypes)) {
final Sets.SetView<String> diff = Sets.difference(searchTypes, stateTypes);
throw new BadRequestException("Search types do not correspond to view/search types, missing searches: " + diff);
}
final Set<String> widgetIds = dto.state().values().stream().flatMap(v -> v.widgets().stream()).map(WidgetDTO::id).collect(Collectors.toSet());
final Set<String> widgetPositions = dto.state().values().stream().flatMap(v -> v.widgetPositions().keySet().stream()).collect(Collectors.toSet());
if (!widgetPositions.containsAll(widgetIds)) {
final Sets.SetView<String> diff = Sets.difference(widgetPositions, widgetIds);
throw new BadRequestException("Widget positions don't correspond to widgets, missing widget possitions: " + diff);
}
}
use of org.graylog2.indexer.searches.Searches in project graylog2-server by Graylog2.
the class FieldContentValueAlertConditionTest method testCorrectUsageOfRelativeRange.
@Test
public void testCorrectUsageOfRelativeRange() throws Exception {
final Stream stream = mock(Stream.class);
final Searches searches = mock(Searches.class);
final Configuration configuration = mock(Configuration.class);
final SearchResult searchResult = mock(SearchResult.class);
final int alertCheckInterval = 42;
final RelativeRange relativeRange = RelativeRange.create(alertCheckInterval);
when(stream.getId()).thenReturn("stream-id");
when(configuration.getAlertCheckInterval()).thenReturn(alertCheckInterval);
when(searches.search(anyString(), anyString(), eq(relativeRange), anyInt(), anyInt(), any(Sorting.class))).thenReturn(searchResult);
final FieldContentValueAlertCondition alertCondition = new FieldContentValueAlertCondition(searches, configuration, stream, null, DateTime.now(DateTimeZone.UTC), "mockuser", ImmutableMap.<String, Object>of("field", "test", "value", "test"), "Field Content Value Test COndition");
final AbstractAlertCondition.CheckResult result = alertCondition.runCheck();
}
Aggregations