123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- [[index-modules-index-sorting]]
- == Index Sorting
- experimental[]
- When creating a new index in elasticsearch it is possible to configure how the Segments
- inside each Shard will be sorted. By default Lucene does not apply any sort.
- The `index.sort.*` settings define which fields should be used to sort the documents inside each Segment.
- [WARNING]
- nested fields are not compatible with index sorting because they rely on the assumption
- that nested documents are stored in contiguous doc ids, which can be broken by index sorting.
- An error will be thrown if index sorting is activated on an index that contains nested fields.
- For instance the following example shows how to define a sort on a single field:
- [source,js]
- --------------------------------------------------
- PUT twitter
- {
- "settings" : {
- "index" : {
- "sort.field" : "date", <1>
- "sort.order" : "desc" <2>
- }
- },
- "mappings": {
- "tweet": {
- "properties": {
- "date": {
- "type": "date"
- }
- }
- }
- }
- }
- --------------------------------------------------
- // CONSOLE
- <1> This index is sorted by the `date` field
- <2> ... in descending order.
- It is also possible to sort the index by more than one field:
- [source,js]
- --------------------------------------------------
- PUT twitter
- {
- "settings" : {
- "index" : {
- "sort.field" : ["username", "date"], <1>
- "sort.order" : ["asc", "desc"] <2>
- }
- },
- "mappings": {
- "tweet": {
- "properties": {
- "username": {
- "type": "keyword",
- "doc_values": true
- },
- "date": {
- "type": "date"
- }
- }
- }
- }
- }
- --------------------------------------------------
- // CONSOLE
- <1> This index is sorted by `username` first then by `date`
- <2> ... in ascending order for the `username` field and in descending order for the `date` field.
- Index sorting supports the following settings:
- `index.sort.field`::
- The list of fields used to sort the index.
- Only `boolean`, `numeric`, `date` and `keyword` fields with `doc_values` are allowed here.
- `index.sort.order`::
- The sort order to use for each field.
- The order option can have the following values:
- * `asc`: For ascending order
- * `desc`: For descending order.
- `index.sort.mode`::
- Elasticsearch supports sorting by multi-valued fields.
- The mode option controls what value is picked to sort the document.
- The mode option can have the following values:
- * `min`: Pick the lowest value.
- * `max`: Pick the highest value.
- `index.sort.missing`::
- The missing parameter specifies how docs which are missing the field should be treated.
- The missing value can have the following values:
- * `_last`: Documents without value for the field are sorted last.
- * `_first`: Documents without value for the field are sorted first.
- [WARNING]
- Index sorting can be defined only once at index creation. It is not allowed to add or update
- a sort on an existing index.
|