| = Analytics Expression Sources |
| :page-tocclass: right |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| |
| Expression sources are the source of the data being aggregated in <<analytics.adoc#expressions,analytics expressions>>. |
| |
| These sources can be either Solr fields indexed with docValues, or constants. |
| |
| == Supported Field Types |
| |
| The following <<field-types-included-with-solr.adoc#field-types-included-with-solr, Solr field types>> are supported. |
| Fields of these types can be either multi-valued and single-valued. |
| |
| All fields used in analytics expressions *must* have <<docvalues.adoc#docvalues,docValues>> enabled. |
| |
| |
| // Since Trie* fields are deprecated as of 7.0, we should consider removing Trie* fields from this list... |
| |
| [horizontal] |
| String:: |
| StrField |
| Boolean:: |
| BoolField |
| Integer:: |
| TrieIntField + |
| IntPointField |
| Long:: |
| TrieLongField + |
| LongPointField |
| Float:: |
| TrieFloatField + |
| FloatPointField |
| Double:: |
| TrieDoubleField + |
| DoublePointField |
| Date:: |
| TrieDateField + |
| DatePointField |
| |
| .Multi-valued Field De-duplication |
| [WARNING] |
| ==== |
| All multi-valued field types, except for PointFields, are de-duplicated, meaning duplicate values for the same field are removed during indexing. |
| In order to save duplicates, you must use PointField types. |
| ==== |
| |
| == Constants |
| |
| Constants can be included in expressions to use along side fields and functions. The available constants are shown below. |
| Constants do not need to be surrounded by any function to define them, they can be used exactly like fields in an expression. |
| |
| === Strings |
| |
| There are two possible ways of specifying constant strings, as shown below. |
| |
| * Surrounded by double quotes, inside the quotes both `"` and `\` must be escaped with a `\` character. |
| + |
| `"Inside of 'double' \\ \"quotes\""` \=> `Inside of 'double' \ "quotes"` |
| * Surrounded by single quotes, inside the quotes both `'` and `\` must be escaped with a `\` character. |
| + |
| `'Inside of "single" \\ \'quotes\''` \=> `Inside of "double" \ 'quotes'` |
| |
| === Dates |
| |
| Dates can be specified in the same way as they are in Solr queries. Just use ISO-8601 format. |
| For more information, refer to the <<working-with-dates.adoc#working-with-dates,Working with Dates>> section. |
| |
| * `2017-07-17T19:35:08Z` |
| |
| === Numeric |
| |
| Any non-decimal number will be read as an integer, or as a long if it is too large for an integer. All decimal numbers will be read as doubles. |
| |
| * `-123421`: Integer |
| * `800000000000`: Long |
| * `230.34`: Double |