schema.content.rnc Maven / Gradle / Ivy
# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
include "container.rnc"
include "searchchains.rnc"
Redundancy = element redundancy {
attribute reply-after { xsd:nonNegativeInteger }? &
xsd:integer { minInclusive = "1" maxInclusive = "65534" }
}
MinRedundancy = element min-redundancy {
xsd:integer { minInclusive = "1" maxInclusive = "65534" }
}
DistributionType = element distribution {
attribute type { string "strict" | string "loose" | string "legacy" }
}
BucketSplitting = element bucket-splitting {
attribute max-documents { xsd:nonNegativeInteger }? &
attribute max-size { xsd:nonNegativeInteger }? &
attribute minimum-bits { xsd:nonNegativeInteger }?
}
MergeTuning = element merges {
attribute max-per-node { xsd:nonNegativeInteger }? &
attribute max-queue-size { xsd:nonNegativeInteger }? &
attribute max-nodes-per-merge { xsd:nonNegativeInteger {
minInclusive = "2" maxInclusive = "16" } }?
}
VisitorMaxConcurrent = element max-concurrent {
attribute fixed { xsd:nonNegativeInteger }? &
attribute variable { xsd:nonNegativeInteger }?
}
VisitorTuning = element visitors {
attribute thread-count { xsd:nonNegativeInteger }? &
attribute max-queue-size { xsd:nonNegativeInteger }? &
VisitorMaxConcurrent?
}
Maintenance = element maintenance {
attribute start { xsd:string { pattern = "[0-9]{2}:[0-9]{2}" } },
attribute stop { xsd:string { pattern = "[0-9]{2}:[0-9]{2}" } },
attribute high { string "monday" | string "tuesday" | string "wednesday" |
string "thursday" | string "friday" | string "saturday" |
string "sunday" }
}
PersistenceThread = element thread {
## The lowest priority this thread should handle.
attribute lowest-priority { string "HIGHEST" | string "VERY_HIGH" | string "HIGH_1" |
string "HIGH_2" | string "HIGH_3" | string "NORMAL_1" | string "NORMAL_2" |
string "NORMAL_3" | string "NORMAL_4" | string "NORMAL_5" | string "NORMAL_6" |
string "LOW_1" | string "LOW_2" | string "LOW_3" | string "VERY_LOW" }? &
## The number of threads of this type to create
attribute count { xsd:integer }?
}
## Declare which storage threads each disk should have.
PersistenceThreads = element persistence-threads {
## The number of threads to create
attribute count { xsd:integer }? &
## All of the below settings are deprecated.
## Operations with priority worse than this can be blocked
attribute highest-priority-to-block { xsd:string } ? &
## Operations with priority better than this can block others
attribute lowest-priority-to-block-others { xsd:string } ? &
Thread*
}
MinNodeRatioPerGroup = element min-node-ratio-per-group {
xsd:double { minInclusive = "0" maxInclusive = "1" }
}
ClusterControllerTuning = element cluster-controller {
element init-progress-time { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? &
element transition-time { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? &
element max-premature-crashes { xsd:nonNegativeInteger }? &
element stable-state-period { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? &
element min-distributor-up-ratio { xsd:double }? &
element min-storage-up-ratio { xsd:double }? &
element groups-allowed-down-ratio { xsd:double { minInclusive = "0" maxInclusive = "1" } }?
}
DispatchTuning = element dispatch {
element max-hits-per-partition { xsd:nonNegativeInteger }? &
element dispatch-policy { string "round-robin" | string "adaptive" | string "random" | "best-of-random-2" | "latency-amortized-over-requests" | "latency-amortized-over-time"}? &
element min-active-docs-coverage { xsd:double }? &
element top-k-probability { xsd:double }?
}
ClusterTuning = element tuning {
DispatchTuning? &
DistributionType? &
BucketSplitting? &
MergeTuning? &
VisitorTuning? &
ClusterControllerTuning? &
Maintenance? &
PersistenceThreads? &
MinNodeRatioPerGroup? &
ResourceLimits?
}
Content = element content {
attribute version { "1.0" } &
attribute id { xsd:NCName }? &
attribute distributor-base-port { xsd:unsignedShort }? &
Redundancy? &
MinRedundancy? &
ContentSearch? &
Dispatch? &
ClusterTuning? &
# Can be used for caches and feedbatching.
GenericConfig* &
Engine? &
# Here you can add document definitions that you also want to handle.
# Search might want to know of them in advance.
Documents? &
ContentNodes? &
TopGroup? &
Controllers?
# Contains experimental feature switches
#Experimental?
}
Controllers =
element controllers {
OptionalDedicatedNodes
}
ContentSearch = element search {
element query-timeout { xsd:double { minInclusive = "0" } }? &
element visibility-delay { xsd:double { minInclusive = "0" } }? &
SearchCoverage?
}
SearchCoverage = element coverage {
element minimum { xsd:double { minInclusive = "0" maxInclusive = "1" } }? &
element min-wait-after-coverage-factor { xsd:double { minInclusive = "0" maxInclusive = "1" } }? &
element max-wait-after-coverage-factor { xsd:double { minInclusive = "0" maxInclusive = "1" } }?
}
# TODO: Deprecated, remove in Vespa 9
Dispatch = element dispatch {
element num-dispatch-groups { xsd:nonNegativeInteger }? &
DispatchGroup*
}
# TODO: Deprecated, remove in Vespa 9
DispatchGroup = element group {
DispatchNode+
}
# TODO: Deprecated, remove in Vespa 9
DispatchNode = element node {
attribute distribution-key { xsd:nonNegativeInteger }
}
## Specification of what document processing should be done for indexing.
DocumentProcessing = element document-processing {
attribute cluster { text }? &
attribute chain { text }?
}
## Config for the persistence providers.
Engine = element engine {
(Proton | Dummy)
}
Proton = element proton {
element flush-on-shutdown { xsd:string }? &
element sync-transactionlog { xsd:string }? &
element visibility-delay { xsd:double { minInclusive = "0.0" } }? &
element query-timeout { xsd:double { minInclusive = "0.0" } }? &
element searchable-copies { xsd:integer { minInclusive = "0" } }? &
ResourceLimits? &
Tuning?
}
ResourceLimits = element resource-limits {
element disk { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? &
element memory { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }?
}
Dummy = element dummy {
text
}
Documents = element documents {
attribute selection { xsd:string }? &
attribute garbage-collection { xsd:string }? &
attribute garbage-collection-interval { xsd:nonNegativeInteger }? &
DocumentProcessing? &
element document {
attribute type { xsd:string } &
attribute selection { xsd:string }? &
attribute mode { string "index" | string "streaming" | string "store-only" } &
attribute global { xsd:boolean }?
}+
}
ContentNode = element node {
GenericConfig* &
service.attlist &
attribute distribution-key { xsd:nonNegativeInteger { maxInclusive = "65534" } } &
attribute capacity { xsd:double { minExclusive = "0.0" } }? &
attribute mmap-core-limit { xsd:nonNegativeInteger }? &
attribute core-on-oom { xsd:boolean }? &
attribute no-vespamalloc { xsd:NMTOKENS }? &
attribute vespamalloc { xsd:NMTOKENS }? &
attribute vespamalloc-debug { xsd:NMTOKENS }? &
attribute vespamalloc-debug-stacktrace { xsd:NMTOKENS }? &
attribute cpu-socket { xsd:nonNegativeInteger }?
}
ContentNodes = element nodes {
Resources? &
attribute cpu-socket-affinity { xsd:string }? &
attribute mmap-core-limit { xsd:nonNegativeInteger }? &
attribute core-on-oom { xsd:boolean }? &
attribute no-vespamalloc { xsd:NMTOKENS }? &
attribute vespamalloc { xsd:NMTOKENS }? &
attribute vespamalloc-debug { xsd:NMTOKENS }? &
attribute vespamalloc-debug-stacktrace { xsd:NMTOKENS }? &
(
(
attribute count { xsd:positiveInteger | xsd:string } &
attribute flavor { xsd:string }? &
attribute required { xsd:boolean }? &
attribute exclusive { xsd:boolean }? &
attribute docker-image { xsd:string }? &
attribute groups { xsd:positiveInteger | xsd:string }? &
attribute group-size { xsd:positiveInteger | xsd:string }?
)
|
ContentNode +
)
}
TopGroup = element group {
# Neither name nor distribution key makes any sense for the top group. There has to be
# a top group so it never needs referring to, and it's only one group to choose from so
# it has no use of a distribution key. Leaving it allowed to set them for now to not
# break all system tests and backward compatibility.
attribute name { xsd:string }? &
attribute cpu-socket-affinity { xsd:string }? &
attribute mmap-core-limit { xsd:nonNegativeInteger }? &
attribute core-on-oom { xsd:boolean }? &
attribute no-vespamalloc { xsd:NMTOKENS }? &
attribute vespamalloc { xsd:NMTOKENS }? &
attribute vespamalloc-debug { xsd:NMTOKENS }? &
attribute vespamalloc-debug-stacktrace { xsd:NMTOKENS }? &
attribute distribution-key { xsd:nonNegativeInteger }? &
(
ContentNode +
|
(
element distribution {
attribute partitions { xsd:string }
} &
Group +
)
)
}
Group = element group {
attribute distribution-key { xsd:nonNegativeInteger } &
attribute name { xsd:string } &
(
ContentNode +
|
(
element nodes {
attribute count { xsd:positiveInteger | xsd:string } &
attribute flavor { xsd:string }? &
attribute required { xsd:boolean }? &
attribute exclusive { xsd:boolean }? &
attribute docker-image { xsd:string }? &
attribute groups { xsd:positiveInteger | xsd:string }?
}
)
|
(
element distribution {
attribute partitions { xsd:string }
} &
Group +
)
)
}
Tuning = element tuning {
# TODO: Deprecated, remove in Vespa 9
# Use the one under the content tag.
element dispatch {
element max-hits-per-partition { xsd:nonNegativeInteger }?
}? &
element searchnode {
element requestthreads {
element search { xsd:nonNegativeInteger }? &
element persearch { xsd:nonNegativeInteger }? &
element summary { xsd:nonNegativeInteger }?
}? &
element lidspace {
element max-bloat-factor { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }?
}? &
element flushstrategy {
element native {
element total {
element maxmemorygain { xsd:nonNegativeInteger }? &
element diskbloatfactor { xsd:double { minInclusive = "0.0" } }?
}? &
element component {
element maxmemorygain { xsd:nonNegativeInteger }? &
element diskbloatfactor { xsd:double { minInclusive = "0.0" } }? &
element maxage { xsd:nonNegativeInteger }?
}? &
element transactionlog {
element maxsize { xsd:nonNegativeInteger }?
}? &
element conservative {
element memory-limit-factor { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? &
element disk-limit-factor { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }?
}?
}?
}? &
element resizing {
# resizing is deprecated and will be gone on vespa 9
element initialdocumentcount { xsd:nonNegativeInteger }? &
element amortize-count { xsd:nonNegativeInteger }?
}? &
element index {
element io {
# io.read and io.write is deprecated and will be gone on vespa 9
element write { TuningIoOptionsLight }? &
element read { TuningIoOptionsLight }? &
element search { TuningIoOptionsSearch }?
}? &
element warmup {
element time { xsd:double { minInclusive = "0.0" } }? &
element unpack { xsd:boolean }?
}?
}? &
element attribute {
# attribute element is deprecated and will be gone on vespa 9
element io {
element write { TuningIoOptionsLight }?
}
}? &
element summary {
element io {
# summary.io.write is deprecated and will be gone on vespa 9
element write { TuningIoOptionsLight }? &
element read { TuningIoOptionsFull }?
}? &
element store {
element cache {
element maxsize { xsd:nonNegativeInteger }? &
element maxsize-percent { xsd:double { minInclusive = "0.0" maxInclusive = "50.0" } }? &
# initialentries is deprecated and will be gone on vespa 9
element initialentries { xsd:nonNegativeInteger }? &
TuningCompression?
}? &
element logstore {
element maxfilesize { xsd:nonNegativeInteger }? &
element minfilesizefactor { xsd:double { minInclusive = "0.10" maxInclusive = "1.0" } }? &
element chunk {
element maxsize { xsd:nonNegativeInteger }? &
TuningCompression?
}?
}?
}?
}? &
element initialize {
element threads { xsd:nonNegativeInteger }?
}? &
element feeding {
element concurrency { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? &
element niceness { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }?
}? &
element removed-db {
element prune {
element age { xsd:double { minInclusive = "0.0" } }? &
element interval { xsd:double { minInclusive = "60.0" } }?
}?
}?
}?
}
TuningIoOptionsLight = string "normal" | string "directio"
TuningIoOptionsFull = string "normal" | string "directio" | string "mmap" | string "populate"
TuningIoOptionsSearch = string "mmap" | string "populate"
TuningCompression = element compression {
element type { string "none" | string "lz4" | string "zstd" }? &
element level { xsd:nonNegativeInteger }?
}
#Experimental = element experimental {
# Put experimental flags here
#}
Thread = element thread {
## The lowest priority this thread should handle.
attribute lowest-priority { xsd:string}? &
## The number of threads of this type to create
attribute count { xsd:integer }?
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy