[Why]
user need get latest doc in ES
[Sample]
caller(es-find | compare | web-backend/compare | ...) use like:
es = ESQuery.new(index: 'jobs')
query_result = es.multi_field_query(items, desc_keyword: 'start_time')
Signed-off-by: Lu Weitao <luweitaobe(a)163.com>
---
lib/es_query.rb | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/lib/es_query.rb b/lib/es_query.rb
index 3bea624..10b9644 100644
--- a/lib/es_query.rb
+++ b/lib/es_query.rb
@@ -18,7 +18,7 @@ class ESQuery
# Example @items: { key1 => value1, key2 => [value2, value3, ..], ...}
# means to query: key1 == value1 && (key2 in [value2, value3, ..])
- def multi_field_query(items, size: 10_000)
+ def multi_field_query(items, size: 10_000, desc_keyword: nil)
unless items
warn 'empty filter!'
exit
@@ -31,6 +31,7 @@ class ESQuery
}
}, size: size
}
+ query.merge!(assign_desc_body(desc_keyword)) if desc_keyword
@client.search index: @index + '*', body: query
end
@@ -112,3 +113,11 @@ def parse_conditions(items)
end
items_hash
end
+
+def assign_desc_body(keyword)
+ {
+ sort: [{
+ keyword => { order: 'desc' }
+ }]
+ }
+end
--
2.23.0