rsyslog/tests/es-bulk-errfile-popul-erronly-interleaved.sh
Rainer Gerhards 5bb8eb9179
omelasticsearch: omit _type by default; use typeless endpoint
Newer Elasticsearch versions reject typed APIs. This adapts the module
so shipping works out of the box with modern clusters and keeps the
codebase aligned with typeless ES conventions.

Impact: bulk metadata no longer includes _type unless explicitly set.
Old setups that relied on a default "events" type (ES < 8) may need
explicit configuration.

Technically, the default searchType is now NULL
(OMES_SEARCHTYPE_DEFAULT). setPostURL continues to route requests to
the typeless /_doc endpoint, but bulk metadata is generated without a
_type field when searchType is unset. The legacy default "events" for
ES < 8 is removed. Tests are updated to stop passing searchType, and
the searchType-empty test is dropped to reflect the new default. No
OMODTX or action-queue semantics change.

Closes: https://github.com/rsyslog/rsyslog/issues/5060
2025-09-25 11:56:32 +02:00

55 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# This file is part of the rsyslog project, released under ASL 2.0
. ${srcdir:=.}/diag.sh init
ensure_elasticsearch_ready
init_elasticsearch
echo '{ "name" : "foo" }
{"name": bar"}
{"name": "baz"}
{"name": foz"}' > $RSYSLOG_DYNNAME.inESData.inputfile
generate_conf
add_conf '
global(workDirectory="'$RSYSLOG_DYNNAME.spool'")
# Note: we must mess up with the template, because we can not
# instruct ES to put further constraints on the data type and
# values. So we require integer and make sure it is none.
template(name="tpl" type="list") {
constant(value="{\"")
property(name="$!key") constant(value="\":") property(name="$!obj")
constant(value="}")
}
module(load="../plugins/omelasticsearch/.libs/omelasticsearch")
module(load="../plugins/imfile/.libs/imfile")
ruleset(name="foo") {
set $!key = "my_obj";
set $!obj = $msg;
action(type="omelasticsearch"
template="tpl"
searchIndex="rsyslog_testbench"
bulkmode="on"
serverport="19200"
errorFile="./'${RSYSLOG_DYNNAME}'.errorfile"
erroronly="on"
interleaved="on")
}
input(type="imfile" File="'$RSYSLOG_DYNNAME.'inESData.inputfile"
Tag="foo"
Severity="info"
ruleset="foo")
'
startup
shutdown_when_empty
wait_shutdown
$PYTHON $srcdir/elasticsearch-error-format-check.py errorinterleaved
if [ $? -ne 0 ]
then
echo "error: Format for error file different! " $?
exit 1
fi
exit_test