anchor.diff:  
   You configure storage for the Collector, Ingester, and Query services under `spec:storage`.  Multiple instances of each of these components can be provisioned as required for performance and resilience purposes.
   
  -.Restrictions
  -
  -* There can be only one Jaeger with self-provisioned Elasticsearch instance per namespace.
  -* There can be only one Elasticsearch per namespace.
  -* You cannot share or reuse a {ProductName} logging Elasticsearch instance with Jaeger.  The Elasticsearch cluster is meant to be dedicated for a single Jaeger instance.
  -
  -[NOTE]
  -====
  -If you already have installed Elasticsearch as part of OpenShift logging, the Jaeger Operator can use the installed Elasticsearch Operator to provision storage.
  -====
  -
   .Jaeger general storage parameters
   [options="header"]
   [cols="l, a, a, a"]
   |===
   |Parameter |Description |Values |Default value
  -
   |spec:
    storage:
     options: {}
  
positive.code: Minimum deployment = 16Gi*
  |
  
  |
  3+|*Each Elasticsearch node can operate with a lower memory setting though this is NOT recommended for production deployments. For production use, you should have no less than 16Gi allocated to each Pod by default, but preferably allocate as much as you can, up to 64Gi per Pod.
  
  4+|Elasticsearch data replication options
  |elasticsearch:
    redundancyPolicy:
  |Data replication policy defines how Elasticsearch shards are replicated across data nodes in the cluster. If not specified,the Jaeger Operator automatically determines the most appropriate replication based on number of nodes.
  |`ZeroRedundancy`(no replica shards), `SingleRedundancy`(one replica shard), `MultipleRedundancy`(each index is spread over half of the Data nodes), `FullRedundancy` (each index is fully replicated on every Data node in the cluster).
  |
  
  |es:
    num-replicas:
  |The number of replicas per index in Elasticsearch.
  |
  |1
  
  |es:
    num-shards:
  |The number of shards per index in Elasticsearch.
  |
  |5
  
  4+|Elasticsearch index and index cleaner configuration options
  |es:
    create-index-templates:
  |Automatically create index templates at application startup when set to `true`. When templates are installed manually, set to `false`.
  |`true`/ `false`
  |`true`
  
  |es:
    index-prefix:
  |Optional prefix for Jaeger indices. For example, setting this to "production" creates indices named "production-jaeger-*".
  |
  |
  
  |esIndexCleaner:
    enabled:
  |When using Elasticsearch storage, by default a job is created to clean old traces from the index.  This parameter enables or disables the index cleaner job.
  |`true`/ `false`
  |`true`
  
  |esIndexCleaner:
    numberOfDays:
  |Number of days to wait before deleting an index.
  |Integer value
  |`7`
  
  |esIndexCleaner:
    schedule:
  |Defines the schedule for how often to clean the Elasticsearch index.
  |Cron expression
  |"55 23 * * *"
  
  |esRollover:
    schedule:
  |Defines the schedule for how often to rollover to a new Elasticsearch index.
  |Cron expression
  |'*/30 * * * *'
  
  4+|Configuration settings for Elasticsearch bulk processor
  |es:
    bulk:
      actions:
  |The number of requests that can be added to the queue before the bulk processor decides to commit updates to disk.
  |
  |1000
  
  //What is the default here?  The original text said "Set to zero to disable. By default, this is disabled."
  |es:
    bulk:
      flush-interval:
  |A `time.Duration` after which bulk requests are committed, regardless of other thresholds.  To disable the bulk processor flush interval, set this to zero.
  |
  |200ms
  
  |es:
    bulk:
      size:
  |The number of bytes that the bulk requests can take up before the bulk processor decides to commit updates to disk.
  |
  |5000000
  
  |es:
    bulk:
      workers:
  |The number of workers that are able to receive and commit bulk requests to Elasticsearch.
  |
  |1
  
  4+|Elasticsearch TLS configuration settings
  |es:
    tls:
      ca:
  |Path to a TLS Certification Authority (CA) file used to verify the remote server(s).
  |
  |Will use the system truststore by default.
  
  |es:
    tls:
      cert:
  |Path to a TLS Certificate file, used to identify this process to the remote server(s).
  |
  |
  
  |es:
    tls:
      enabled:
  |Enable transport layer security (TLS) when talking to the remote server(s). Disabled by default.
  |`true`/ `false`
  |`false`
  
  |es:
    tls:
      key:
  |Path to a TLS Private Key file, used to identify this process to the remote server(s).
  |
  |
  
  |es:
    tls:
      server-name:
  |Override the expected TLS server name in the certificate of the remote server(s).
  |
  |
  //Clarification of "if specified" for `token-file` and `username`, does that mean if this is set?  Or that it only loads the CA if one is specified (that is, if es.tls.ca has a value?)
  |es:
    token-file:
  |Path to a file containing the bearer token. This flag also loads the Certification Authority (CA) file if it is specified.
  |
  |
  
  4+|Elasticsearch archive configuration settings
  |es-archive:
    bulk:
      actions:
  |The number of requests that can be added to the queue before the bulk processor decides to commit updates to disk.
  |
  |0
  
  //What is the default here?  The original text said "Set to zero to disable. By default, this is disabled."
  |es-archive:
    bulk:
      flush-interval:
  |A `time.Duration` after which bulk requests are committed, regardless of other thresholds.  To disable the bulk processor flush interval, set this to zero.
  |
  |0s
  
  |es-archive:
    bulk:
      size:
  |The number of bytes that the bulk requests can take up before the bulk processor decides to commit updates to disk.
  |
  |0
  
  |es-archive:
    bulk:
      workers:
  |The number of workers that are able to receive and commit bulk requests to Elasticsearch.
  |
  |0
  
  |es-archive:
    create-index-templates:
  |Automatically create index templates at application startup when set to `true`. When templates are installed manually, set to `false`.
  |`true`/ `false`
  |`false`
  
  |es-archive:
    enabled:
  |Enable extra storage.
  |`true`/ `false`
  |`false`
  
  |es-archive:
    index-prefix:
  |Optional prefix for Jaeger indices. For example, setting this to "production" creates indices named "production-jaeger-*".
  |
  |
  
  |es-archive:
    max-num-spans:
  |The maximum number of spans to fetch at a time, per query, in Elasticsearch.
  |
  |0
  
  |es-archive:
    max-span-age:
  |The maximum lookback for spans in Elasticsearch.
  |
  |0s
  
  |es-archive:
    num-replicas:
  |The number of replicas per index in Elasticsearch.
  |
  |0
  
  |es-archive:
    num-shards:
  |The number of shards per index in Elasticsearch.
  |
  |0
  
  |es-archive:
    password:
  |The password required by Elasticsearch.   See also, `es.username`.
  |
  |
  
  |es-archive:
    server-urls:
  |The comma-separated list of Elasticsearch servers.  Must be specified as fully qualified URLs, for example, `\http://localhost:9200`.
  |
  |
  
  |es-archive:
    sniffer:
  |The sniffer configuration for Elasticsearch.  The client uses the sniffing process to find all nodes automatically. Disabled by default.
  |`true`/ `false`
  |`false`
  
  |es-archive:
    timeout:
  |Timeout used for queries. When set to zero there is no  timeout.
  |
  |0s
  
  |es-archive:
    tls:
      ca:
  |Path to a TLS Certification Authority (CA) file used to verify the remote server(s).
  |
  |Will use the system truststore by default.
  
  |es-archive:
    tls:
      cert:
  |Path to a TLS Certificate file, used to identify this process to the remote server(s).
  |
  |
  
  |es-archive:
    tls:
      enabled:
  |Enable transport layer security (TLS) when talking to the remote server(s). Disabled by default.
  |`true`/ `false`
  |`false`
  
  |es-archive:
    tls:
      key:
  |Path to a TLS Private Key file, used to identify this process to the remote server(s).
  |
  |
  
  |es-archive:
    tls:
      server-name:
  |Override the expected TLS server name in the certificate of the remote server(s).
  |
  |
  
  //Clarification of "if specified" for next two rows, does that mean if this is set?  Or that it only loads the CA if one is specified (that is, if es-archive.tls.ca has a value?)
  |es-archive:
    token-file:
  |Path to a file containing the bearer token. This flag also loads the Certification Authority (CA) file if it is specified.
  |
  |
  
  |es-archive:
    username:
  |The username required by Elasticsearch. The basic authentication also loads CA if it is specified.  See also `es-archive.password`.
  |
  |
  
  |es-archive:
    version:
  |The major Elasticsearch version. If not specified, the value will be auto-detected from Elasticsearch.
  |
  |0
  |===
  
  .Production storage example
  
negative.code:         secretName: quickstart-es-http-certs-public
  ----
  
  The following example shows a Jaeger CR using an external Elasticsearch cluster with TLS CA certificate mounted from a volume and user/password stored in a secret.
  
  .External Elasticsearch example:
  [source,yaml]
  ----
  apiVersion: jaegertracing.io/v1
  