https://www.elastic.co/
Retrieve
Multiple where
condition
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| GET /index/type/_search { "query": { "bool": { "must": [ { "term": { "field1": { "value": "foo" } } }, { "term": { "field2": { "value": "bar" } } } ] } }, "from": 0, "size": 20 }
|
equivalent to
1 2 3 4 5
| SELECT * FROM index WHERE field1 = 'foo' AND field2 = 'bar' LIMIT 20 OFFSET 0;
|
Update
Bulk update
1 2 3 4 5 6 7 8 9 10 11
| POST /index/type/_update_by_query { "conflicts": "proceed", "script": { "source": "ctx._source['field'] = 'some value'" }, "query": { "term": { "user": "kimchy" } }
|
equivalent to
1 2 3
| UPDATE index SET field = 'some value' WHERE user = 'kimchy';
|
OR if want to add json value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| POST /index/type/_update_by_query { "conflicts": "proceed", "script": { "source": "ctx._source.field = params.some_json_field", "params": { "some_json_field": { "sub_field_1": "Foo", "sub_field_2": "Bar" } } }, "query": { "term": { "user": "kimchy" } } }
|
After run update, must flush it
References:
GROUP BY query
Translate
1 2 3 4 5
| SELECT COUNT(*) as doc_count FROM index GROUP BY field_name ORDER BY doc_count DESC LIMIT 10
|
equivalent to
1 2 3 4 5 6 7 8 9 10 11 12
| GET /index/type/_mapping { "aggregations": { "some_name": { "terms": { "field": "field_name", "size": 10 } } }, "size": 0 }
|
References:
Add new field
Update the mapping first
1 2 3 4 5 6 7 8
| PUT /index/type/_mapping { "properties": { "new_field": { "type": "keyword" } } }
|
Copy data from source index to dest index
1 2 3 4 5 6 7 8 9 10 11
| POST _reindex { "source": { "index": "source_idx", "type": "product" }, "dest": { "index": "destination_idx", "type": "product" } }
|
References:
Sort by nested object count
1 2 3 4 5 6 7 8 9 10
| GET index_name/_doc/_search { "sort" : { "_script" : { "script": "params['_source']['some_nested_objects'].size()", "order": "desc", "type" : "number" } } }
|