搜索查询不会返回elasticsearch中的任何内容

时间:2016-05-31 07:34:56

标签: python elasticsearch

我正致力于弹性搜索。我在elasticsearch中创建并索引了json文件内容。现在我尝试使用搜索查询搜索文本。当我尝试在elasticsearch中执行以下查询时,它不会返回结果中的任何内容。但价值观在其中。因为我使用curl命令检查,它返回结果。

我执行了 elasticsearch query 命令

ES_HOST = {"host":"xxx.xx.xx.xx","port":"9200"}
ES_INDEX = 'sugan'
ES_TYPE = 'doc'

es = Elasticsearch(hosts=[ES_HOST])

res = es.search(index=ES_INDEX,body={"query":{"match_all":{}}})

when i print **res**, it's response like below

Search Response:'{u'hits': {u'hits': [], u'total': 0, u'max_score': None}, u'_shards': {u'successful': 1, u'failed': 0, u'total': 1}, u'took': 1, u'timed_out': False}'

 for hit in result['hits']['hits']:
    print "results:"
    print (hit["_source"])

它不会调用for循环。我不知道为什么

它不会返回任何内容

我执行了 curl 命令

curl -XGET 'xxx.xx.xx.xx:9200/sugan/_search?'

它得到了正确的结果

1 个答案:

答案 0 :(得分:1)

代码的问题是“port”为字符串

ES_HOST = {"host":"xxx.xx.xx.xx","port":"9200"}

应该是:

ES_HOST = {"host":"xxx.xx.xx.xx","port": 9200}

这是所需的python代码(您需要将host_ip替换为您的主机IP

from elasticsearch import Elasticsearch
es =  Elasticsearch(hosts = [{"host" : host_ip, "port" : 9200}])
ES_INDEX='sugan'
es.search(index=ES_INDEX,body={"query":{"match_all":{}}})