【问题标题】:Search query doesn't return anything in elasticsearch搜索查询在弹性搜索中不返回任何内容
【发布时间】:2016-06-01 17:41:47
【问题描述】:

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

我执行了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命令

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

得到了正确的结果

【问题讨论】:

  • 您能否展示您如何在 Python 代码中设置 es 客户端?

标签: python elasticsearch


【解决方案1】:

您的代码的问题是“端口”作为字符串

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

应该是:

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":{}}})

【讨论】:

  • 是的,我已经这样做了。我只是提到了让你知道的语法。但我没有得到结果
  • 请复制/粘贴您的 4 行 python - 只是为了确保您没有任何拼写错误。
  • @PythonTeam :我认为我发现你的错误......端口被定义为字符串而不是 int
  • 我像你说的那样改变了。现在也没有得到结果。
  • 尝试再次运行“curl”命令,以确保弹性搜索服务器已启动。并尝试两者,端口 = 9200 的代码,以及我的答案中的 4 行代码(修改 host_ip 的值)。这 4 行对我有用...
猜你喜欢
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
相关资源
最近更新 更多