def es_autocomplete(self, q, size=10): if not q: return es = self.connect() ts_start = time.time() q = any2unicode(q) query = { "_source": ["@id","name", "nameZh"], "query":{ "wildcard":{"index_wildcard":u"*{}*".format(q) } } } # logging.info(json.dumps(query,ensure_ascii=False)) ret = es.search(index=self.es_config["es_index"], body=query) # logging.info(json.dumps(ret,ensure_ascii=False, indent=4)) # rewrite return value output = { "results": [x["_source"] for x in ret["hits"]["hits"][:size]] } output["servertime"] = (time.time() - ts_start) #logging.info(json.dumps(output,ensure_ascii=False, indent=4)) return output
def es_search(self, q, offset=0, size=10): if not q: return es = self.connect() ts_start = time.time() q = any2unicode(q) query = { "_source": ["@id", "name", "nameZh", "description", "descriptionZh"], "query":{ "query_string" : { #"fields" : ["name", "nameZh", "description", "descriptionZh", "wikidataName"], "fields" : ["index_search"], "query" : q } }, "from": offset, "size": size, } # logging.info(json.dumps(query,ensure_ascii=False)) ret = es.search(index=self.es_config["es_index"], body=query) # logging.info(json.dumps(ret,ensure_ascii=False, indent=4)) # rewrite return value output = { "results": [x["_source"] for x in ret["hits"]["hits"]] } output["servertime"] = (time.time() - ts_start) output["total"] = ret["hits"]["total"] output["offset"] = offset #logging.info(json.dumps(output,ensure_ascii=False, indent=4)) return output
def es_prefix(self, q, size=10): if not q: return es = self.connect() ts_start = time.time() q = any2unicode(q) query = { "concept-suggest": { "text": q, "completion": { "field": "index_suggest" } } } # logging.info(json.dumps(query,ensure_ascii=False)) ret = es.suggest(index=self.es_config["es_index"], body=query) logging.info(json.dumps(ret, ensure_ascii=False, indent=4)) # rewrite return value output = { "results": [ x["payload"] for x in ret["concept-suggest"][0]["options"][:size] ] } output["servertime"] = (time.time() - ts_start) #logging.info(json.dumps(output,ensure_ascii=False, indent=4)) return output