Skip to content

Commit 37c6e1f

Browse files
committed
Add user setting to enable default message sort
1 parent d42657e commit 37c6e1f

File tree

4 files changed

+125
-2
lines changed

4 files changed

+125
-2
lines changed

x-pack/plugin/logsdb/src/main/java/org/elasticsearch/xpack/logsdb/LogsDBPlugin.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ public class LogsDBPlugin extends Plugin implements ActionPlugin, MapperPlugin {
4848
Setting.Property.Dynamic,
4949
Setting.Property.NodeScope
5050
);
51+
static final Setting<Boolean> LOGSDB_DEFAULT_SORT_ON_MESSAGE_TEMPLATE = Setting.boolSetting(
52+
"index.logsdb.default_sort_on_message_template",
53+
false,
54+
Setting.Property.IndexScope,
55+
Setting.Property.Final
56+
);
5157

5258
private final LogsdbIndexModeSettingsProvider logsdbIndexModeSettingsProvider;
5359

@@ -97,7 +103,8 @@ public List<Setting<?>> getSettings() {
97103
FALLBACK_SETTING,
98104
CLUSTER_LOGSDB_ENABLED,
99105
LOGSDB_PRIOR_LOGS_USAGE,
100-
PatternTextFieldMapper.DISABLE_TEMPLATING_SETTING
106+
PatternTextFieldMapper.DISABLE_TEMPLATING_SETTING,
107+
LOGSDB_DEFAULT_SORT_ON_MESSAGE_TEMPLATE
101108
);
102109
}
103110

x-pack/plugin/logsdb/src/main/java/org/elasticsearch/xpack/logsdb/LogsdbIndexModeSettingsProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,9 @@ && matchesLogsPattern(dataStreamName)) {
157157
additionalSettings.put(IndexSettings.LOGSDB_SORT_ON_HOST_NAME.getKey(), true);
158158
}
159159

160-
if (mappingHints.sortOnMessageTemplate) {
160+
if (mappingHints.sortOnMessageTemplate
161+
&& (LogsDBPlugin.LOGSDB_DEFAULT_SORT_ON_MESSAGE_TEMPLATE.get(settings)
162+
|| IndexSettings.LOGSDB_SORT_ON_MESSAGE_TEMPLATE.get(settings))) {
161163
additionalSettings.put(IndexSettings.LOGSDB_SORT_ON_MESSAGE_TEMPLATE.getKey(), true);
162164
}
163165

x-pack/plugin/logsdb/src/test/java/org/elasticsearch/xpack/logsdb/LogsdbIndexModeSettingsProviderTests.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,61 @@ public void testSortAndHostNameKeyword() throws Exception {
10721072
assertEquals(1, newMapperServiceCounter.get());
10731073
}
10741074

1075+
public void testSortAndHostNameKeywordAndMessage() throws Exception {
1076+
var settings = Settings.builder()
1077+
.put(IndexSettings.MODE.getKey(), IndexMode.LOGSDB)
1078+
.put(LogsDBPlugin.LOGSDB_DEFAULT_SORT_ON_MESSAGE_TEMPLATE.getKey(), true)
1079+
.build();
1080+
1081+
var mappings = """
1082+
{
1083+
"properties": {
1084+
"@timestamp": {
1085+
"type": "date"
1086+
},
1087+
"host.name": {
1088+
"type": "keyword"
1089+
},
1090+
"message": {
1091+
"type": "pattern_text"
1092+
}
1093+
}
1094+
}
1095+
""";
1096+
1097+
Settings result = generateLogsdbSettings(settings, getMapping(mappings));
1098+
assertTrue(IndexSettings.LOGSDB_SORT_ON_HOST_NAME.get(result));
1099+
assertTrue(IndexSettings.LOGSDB_SORT_ON_MESSAGE_TEMPLATE.get(result));
1100+
assertFalse(IndexSettings.LOGSDB_ADD_HOST_NAME_FIELD.get(result));
1101+
assertEquals(1, newMapperServiceCounter.get());
1102+
}
1103+
1104+
public void testSortAndHostNameKeywordAndDisabledMessage() throws Exception {
1105+
var settings = Settings.builder().put(IndexSettings.MODE.getKey(), IndexMode.LOGSDB).build();
1106+
1107+
var mappings = """
1108+
{
1109+
"properties": {
1110+
"@timestamp": {
1111+
"type": "date"
1112+
},
1113+
"host.name": {
1114+
"type": "keyword"
1115+
},
1116+
"message": {
1117+
"type": "pattern_text"
1118+
}
1119+
}
1120+
}
1121+
""";
1122+
1123+
Settings result = generateLogsdbSettings(settings, getMapping(mappings));
1124+
assertTrue(IndexSettings.LOGSDB_SORT_ON_HOST_NAME.get(result));
1125+
assertFalse(IndexSettings.LOGSDB_SORT_ON_MESSAGE_TEMPLATE.get(result));
1126+
assertFalse(IndexSettings.LOGSDB_ADD_HOST_NAME_FIELD.get(result));
1127+
assertEquals(1, newMapperServiceCounter.get());
1128+
}
1129+
10751130
public void testSortAndHostNameKeywordNoDocvalues() throws Exception {
10761131
var settings = Settings.builder().put(IndexSettings.MODE.getKey(), IndexMode.LOGSDB).build();
10771132
var mappings = """

x-pack/plugin/logsdb/src/yamlRestTest/resources/rest-api-spec/test/80_index_sort_defaults.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ create logsdb data stream with message as pattern text, and timestamp as date:
138138
template:
139139
settings:
140140
mode: "logsdb"
141+
logsdb.default_sort_on_message_template: true
141142
mappings:
142143
properties:
143144
message:
@@ -194,6 +195,7 @@ create logsdb data stream with host.name as keyword, message as pattern text, an
194195
template:
195196
settings:
196197
mode: "logsdb"
198+
logsdb.default_sort_on_message_template: true
197199
mappings:
198200
properties:
199201
host.name:
@@ -239,6 +241,63 @@ create logsdb data stream with host.name as keyword, message as pattern text, an
239241
- match: { .$backing_index.defaults.index.sort.mode: [ "min", "min", "max" ] }
240242
- match: { .$backing_index.defaults.index.sort.missing: [ "_last", "_last", "_last" ] }
241243

244+
---
245+
create logsdb data stream with host.name as keyword, message as pattern text, and timestamp as date, but message sort disabled:
246+
- do:
247+
cluster.put_component_template:
248+
name: "logsdb-mappings"
249+
body:
250+
template:
251+
settings:
252+
mode: "logsdb"
253+
mappings:
254+
properties:
255+
host.name:
256+
type: "keyword"
257+
message:
258+
type: pattern_text
259+
"@timestamp":
260+
type: "date"
261+
262+
- do:
263+
indices.put_index_template:
264+
name: "logsdb-index-template"
265+
body:
266+
index_patterns: ["logsdb"]
267+
data_stream: {}
268+
composed_of: ["logsdb-mappings"]
269+
allowed_warnings:
270+
- "index template [logsdb-index-template] has index patterns [logsdb] matching patterns from existing older templates [global] with patterns (global => [*]); this template [logsdb-index-template] will take precedence during new index creation"
271+
272+
- do:
273+
indices.create_data_stream:
274+
name: "logsdb"
275+
276+
- is_true: acknowledged
277+
- do:
278+
indices.get_data_stream:
279+
name: "logsdb"
280+
expand_wildcards: hidden
281+
- length: { data_streams: 1 }
282+
- set: { data_streams.0.indices.0.index_name: backing_index }
283+
284+
- do:
285+
indices.get_settings:
286+
index: $backing_index
287+
include_defaults: true
288+
- match: { .$backing_index.settings.index.mode: logsdb }
289+
- match: { .$backing_index.settings.index.logsdb.add_host_name_field: null }
290+
- match: { .$backing_index.defaults.index.logsdb.add_host_name_field: "false" }
291+
- match: { .$backing_index.settings.index.logsdb.sort_on_host_name: "true" }
292+
- match: { .$backing_index.settings.index.logsdb.sort_on_message_template: null}
293+
- match: { .$backing_index.defaults.index.logsdb.sort_on_message_template: "false" }
294+
- match: { .$backing_index.settings.index.logsdb.default_sort_on_message_template: null }
295+
- match: { .$backing_index.defaults.index.logsdb.default_sort_on_message_template: "false" }
296+
- match: { .$backing_index.defaults.index.sort.field: [ "host.name", "@timestamp" ] }
297+
- match: { .$backing_index.defaults.index.sort.order: [ "asc", "desc" ] }
298+
- match: { .$backing_index.defaults.index.sort.mode: [ "min", "max" ] }
299+
- match: { .$backing_index.defaults.index.sort.missing: [ "_last", "_last" ] }
300+
242301
---
243302
create logsdb data stream with host.name as integer and timestamp as date:
244303
- do:

0 commit comments

Comments
 (0)