我有一个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相关问答推荐

创建一个由 1-90 的唯一数字组成的 M*N 矩阵

如何重构此代码片段以提高效率?

如何在 python 中过滤 .json 数组,以便每个元素中只显示一个参数?

使用 Ipywidgets 按索引的 DataFrame 交互式绘图

反转的正则表达式模式比原始模式慢得多

是否有用于表示数据增量的标准算法或库?

计算区间中素数的算法不起作用

Python for Google Sheets:自动创建新工作表(在同一个工作簿中)并将新数据框写入其中

如何停止 func 运行并在一分钟后返回一个值?

pip 和命令行的问题

Sympy 反函数:y = ax+b 变为 x = (y-b)/a

Haystack 为预测指定列

NNC 的整数规划

numpy.linalg.det 的时间复杂度是多少?

Python pandas:来自 get_dummies 的动态连接

防止更新中间文件时重新运行规则

是否有更好的正则表达式来计算中文字母的数量并同时排除一些字符?

在 __next__() 中修改之前返回对象

Pandas:使用两个数据帧执行操作

如何从多个数据帧创建分层多索引数据帧?