Azure 搜索 - 创建索引 - JSON 解码错误
Azure search - Create Index - JSON decode error
我正在使用 django 框架。我正在尝试使用他们提供的 REST api tutorial 在 Azure 门户中创建索引。发送 post 请求时出现以下错误。
JSONDecodeError at /createIndex
这是我的方法。
@csrf_exempt
def createIndex(request):
endpoint = 'https://service.search.windows.net/'
api_version = '2020-06-30'
url = endpoint + "indexes" + api_version
index_schema = {
"name": "hotels-quickstar11t",
"fields": [
{"name": "HotelId", "type": "Edm.String", "key": "true", "filterable": "true"},
{"name": "HotelName", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "true", "facetable": "false"},
{"name": "Description", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "en.lucene"},
{"name": "Description_fr", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "fr.lucene"},
{"name": "Category", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Tags", "type": "Collection(Edm.String)", "searchable": "true", "filterable": "true", "sortable": "false", "facetable": "true"},
{"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Rating", "type": "Edm.Double", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Address", "type": "Edm.ComplexType",
"fields": [
{"name": "StreetAddress", "type": "Edm.String", "filterable": "false", "sortable": "false", "facetable": "false", "searchable": "true"},
{"name": "City", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "StateProvince", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "PostalCode", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Country", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}
]
}
]
}
headers = {'Content-Type': 'application/json', 'api-key': '******'}
response = requests.post(url, headers=headers, json=index_schema)
index = response.json()
return HttpResponse(response)
知道我的方法有什么问题吗?
仅供参考;我已经屏蔽了我的 api 密钥和服务名称。它们是有效的,因为它们适用于其他方法。
我认为问题出在您的以下代码行中:
url = endpoint + "indexes" + api_version
如果您注意到,您缺少 ?
和 api-version=
查询参数(您只包含 api 版本值)。
请将上面这行代码改为
url = endpoint + "indexes?api-version=" + api_version
这应该可以解决问题。
我正在使用 django 框架。我正在尝试使用他们提供的 REST api tutorial 在 Azure 门户中创建索引。发送 post 请求时出现以下错误。
JSONDecodeError at /createIndex
这是我的方法。
@csrf_exempt
def createIndex(request):
endpoint = 'https://service.search.windows.net/'
api_version = '2020-06-30'
url = endpoint + "indexes" + api_version
index_schema = {
"name": "hotels-quickstar11t",
"fields": [
{"name": "HotelId", "type": "Edm.String", "key": "true", "filterable": "true"},
{"name": "HotelName", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "true", "facetable": "false"},
{"name": "Description", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "en.lucene"},
{"name": "Description_fr", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "fr.lucene"},
{"name": "Category", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Tags", "type": "Collection(Edm.String)", "searchable": "true", "filterable": "true", "sortable": "false", "facetable": "true"},
{"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Rating", "type": "Edm.Double", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Address", "type": "Edm.ComplexType",
"fields": [
{"name": "StreetAddress", "type": "Edm.String", "filterable": "false", "sortable": "false", "facetable": "false", "searchable": "true"},
{"name": "City", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "StateProvince", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "PostalCode", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Country", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}
]
}
]
}
headers = {'Content-Type': 'application/json', 'api-key': '******'}
response = requests.post(url, headers=headers, json=index_schema)
index = response.json()
return HttpResponse(response)
知道我的方法有什么问题吗?
仅供参考;我已经屏蔽了我的 api 密钥和服务名称。它们是有效的,因为它们适用于其他方法。
我认为问题出在您的以下代码行中:
url = endpoint + "indexes" + api_version
如果您注意到,您缺少 ?
和 api-version=
查询参数(您只包含 api 版本值)。
请将上面这行代码改为
url = endpoint + "indexes?api-version=" + api_version
这应该可以解决问题。