我正致力于弹性搜索。我在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?'
它得到了正确的结果
答案 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":{}}})