2016-05-31 103 views
0

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

我执行elasticsearch查询命令

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 -XGET 'xxx.xx.xx.xx:9200/sugan/_search?' 

它越来越正确的结果

+3

你能告诉你如何设置您'es'您的客户端Python代码? – Val

回答

1

与您的代码的问题是“口” as string

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

It应该是:

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

这是需要Python代码(你需要与你的主机IP更换host_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":{}}}) 
+0

是的,我已经做到了。我只是提到你的语法来了解这一点。但我没有得到结果 –

+0

请复制/粘贴你的4行python - 只是为了确保你没有任何错字。 – Yaron

+0

我编辑过,请检查一次。 –

相关问题