我正在尝试查询公共的芝加哥艺术学院API,以便只显示符合特定条件的结果。例如:
classification_title
=“油漆”colorfulness
〈= 13material_titles
包括“纸(纤维制品)”
API文档规定:
在幕后,我们的搜索由Elasticsearch提供支持,你可以使用它的QueryDSL与我们的API交互。
除了一个标准之外,我不知道如何获取一个类似Elasticsearch DSL JSON的对象并将其传递到API URL中。
以下是一些特定于此API的单一标准示例:
requests.get("https://api.artic.edu/api/v1/artworks/search?q=woodblock[classification_title]").json()
requests.get("https://api.artic.edu/api/v1/artworks/search?q=monet[artist_title]").json()
这里是我的一些失败的尝试,有返回只有项目,通过2+标准项目:
requests.get("https://api.artic.edu/api/v1/artworks/search?q=woodblock[classification_title]monet[artist_title]")
requests.get("https://api.artic.edu/api/v1/artworks/search?q=woodblock[classification_title],monet[artist_title]")
requests.get("https://api.artic.edu/api/v1/artworks/search?q=%2Bclassification_title%3A(woodblock)+%2Bartist_title%3A(monet)")
最后,我尝试返回一些更复杂的条件,例如range,但失败了:
requests.get("https://api.artic.edu/api/v1/artworks/search?q={range:lte:10}&query[colorfulness]").json()
requests.get("https://api.artic.edu/api/v1/artworks/search?q=<10&query[colorfulness]").json()
requests.get("https://api.artic.edu/api/v1/artworks/search?q=%2Bdate_display%3A%3C1900").json()
所有这些失败的尝试都返回了数据,但不在我通过的标准范围内。例如,woodblock[classification_title]monet[artist_title]
应该不返回任何结果。
我如何查询所有这些条件,只返回符合所有这些条件的结果(如果有的话)呢?类似JSON的Query DSL似乎与requests.get
不兼容。
1条答案
按热度按时间vpfxa7rd1#
解决了,我对
GET
和POST
的知识比较欠缺,我确实可以使用类似JSON的Query DSL,只需要将它作为requests.post
的一部分而不是requests.get
发送,如下所示:注意,在
requests.post
中,所需的条件查询作为json
参数传递,与url
分开。