我有一个RESTful API,我在EC2实例上使用Elasticsearch的一个实现来索引内容库.我可以通过从我的终端(MacOSX)运行以下命令来查询搜索:

curl -XGET 'http://ES_search_demo.com/document/record/_search?pretty=true' -d '{
  "query": {
    "bool": {
      "must": [
        {
          "text": {
            "record.document": "SOME_JOURNAL"
          }
        },
        {
          "text": {
            "record.articleTitle": "farmers"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 50,
  "sort": [],
  "facets": {}
}'

如何使用python/requestspython/urllib2(不确定使用哪一个——一直在使用urllib2,但听说请求更好……)将上述内容转换为API请求?我是以头球还是其他方式传球?

推荐答案

使用requests:

import requests
url = 'http://ES_search_demo.com/document/record/_search?pretty=true'
data = '''{
  "query": {
    "bool": {
      "must": [
        {
          "text": {
            "record.document": "SOME_JOURNAL"
          }
        },
        {
          "text": {
            "record.articleTitle": "farmers"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 50,
  "sort": [],
  "facets": {}
}'''
response = requests.post(url, data=data)

根据API返回的响应类型,您可能需要查看response.textresponse.json()(或者可能先判断response.status_code).请参阅quickstart docs here,尤其是this section.

Python相关问答推荐

Deliveryter Notebook -无法在for循环中更新matplotlib情节(保留之前的情节),也无法使用动画子功能对情节进行动画

滚动和,句号来自Pandas列

根据在同一数据框中的查找向数据框添加值

如何将双框框列中的成对变成两个新列

Python中的嵌套Ruby哈希

计算组中唯一值的数量

如何使用Python以编程方式判断和检索Angular网站的动态内容?

在vscode上使用Python虚拟环境时((env))

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

在Python中调用变量(特别是Tkinter)

处理具有多个独立头的CSV文件

Python—为什么我的代码返回一个TypeError

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

如何在Python中使用Iscolc迭代器实现观察者模式?

语法错误:文档. evaluate:表达式不是合法表达式

使用tqdm的进度条

无法在盐流道中获得柱子

FileNotFoundError:[WinError 2]系统找不到指定的文件:在os.listdir中查找扩展名

生产者/消费者-Queue.get by list

如何将参数名作为参数传入到函数中?