diff --git a/app/vlinsert/loki/loki_protobuf.go b/app/vlinsert/loki/loki_protobuf.go
index db88a40c04..a55cad1383 100644
--- a/app/vlinsert/loki/loki_protobuf.go
+++ b/app/vlinsert/loki/loki_protobuf.go
@@ -8,13 +8,14 @@ import (
 
 	"github.com/golang/snappy"
 
+	"github.com/VictoriaMetrics/metrics"
+	"github.com/VictoriaMetrics/metricsql"
+
 	"github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil"
 	"github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver"
 	"github.com/VictoriaMetrics/VictoriaMetrics/lib/logstorage"
 	"github.com/VictoriaMetrics/VictoriaMetrics/lib/slicesutil"
 	"github.com/VictoriaMetrics/VictoriaMetrics/lib/writeconcurrencylimiter"
-	"github.com/VictoriaMetrics/metrics"
-	"github.com/VictoriaMetrics/metricsql"
 )
 
 var (
@@ -108,10 +109,15 @@ func parseLogFields(s string, dst []logstorage.Field) ([]logstorage.Field, error
 		return nil, fmt.Errorf("failed to parse stream labels; got %q", expr.AppendString(nil))
 	}
 
+	// Expecting only label filters without MetricsQL "or" operator.
+	if len(me.LabelFilterss) != 1 {
+		return nil, fmt.Errorf("unexpected format of log fields; got %q", s)
+	}
+
 	// Allocate space for labels + msg field.
 	// Msg field is added by caller.
-	dst = slicesutil.ResizeNoCopyMayOverallocate(dst, len(me.LabelFilters)+1)
-	for i, l := range me.LabelFilters {
+	dst = slicesutil.ResizeNoCopyMayOverallocate(dst, len(me.LabelFilterss[0]))
+	for i, l := range me.LabelFilterss[0] {
 		dst[i].Name = l.Label
 		dst[i].Value = l.Value
 	}