def search(): """@params: q: query statement fl: filter by column count: the number of ci ret_key: id, name, alias facet: statistic wt: result format """ page = get_page(request.values.get("page", 1)) count = get_per_page(request.values.get("count")) query = request.values.get('q', "") fl = request.values.get('fl', "").split(",") ret_key = request.values.get('ret_key', "name") if ret_key not in ('name', 'alias', 'id'): ret_key = 'name' facet = request.values.get("facet", "").split(",") wt = request.values.get('wt', 'json') fl = filter(lambda x: x != "", fl) facet = filter(lambda x: x != "", facet) sort = request.values.get("sort") start = time.time() s = Search(query, fl, facet, page, ret_key, count, sort) try: response, counter, total, page, numfound, facet = s.search() except SearchError, e: return abort(400, str(e))
def get_last_bookmark_archive_date(): """ do an Elasticsearch query for the most recent bookmark archive date return it in the same format as get_last_bookmark_update_date for comparison purposes """ s = Search('{}_bookmarks'.format(settings.PINBOARD_USERNAME), { "from": 0, "size": 1, "query": { "match_all": {} }, "fields": [ "time" ], "sort": { "time": { "order": "desc" } } }, mappers={ 'time': ElasticFieldMapper.date }) ero = s.search() first = next(ero.hits, None) return first.time if first is not None else first