plugins/example/elastic/Writer.py (33 lines of code) (raw):

import logging import os import os.path import urllib.request, urllib.parse, urllib.error from edge.writer.estemplateresponsewriter import ESTemplateResponseWriter from edge.response.estemplateresponse import ESTemplateResponse class Writer(ESTemplateResponseWriter): def __init__(self, configFilePath): super(Writer, self).__init__(configFilePath) templatePath = os.path.dirname(configFilePath) + os.sep templatePath += self._configuration.get('service', 'template') self.template = self._readTemplate(templatePath) def _generateOpenSearchResponse(self, solrResponse, searchText, searchUrl, searchParams, pretty): response = ESTemplateResponse(searchUrl, searchParams, self._configuration.getint('solr', 'entriesPerPage')) response.setTemplate(self.template) return response.generate(solrResponse, pretty=pretty) def _constructQuery(self, startIndex, entriesPerPage, parameters, facets): queries = [] filterQueries = [] sort = None for key, value in parameters.items(): if value != "": if key == 'keyword': queries.append(urllib.parse.quote(value)) if len(queries) == 0: queries.append('*') query = 'q='+'+AND+'.join(queries)+'&from='+str(startIndex)+'&size='+str(entriesPerPage) if len(filterQueries) > 0: query += '&fq='+'+AND+'.join(filterQueries) if sort is not None: query += '&sort=' + sort logging.debug('elasticsearch query: '+query) return query