У меня есть коллекция mongo db users
со следующим форматом данных
{
"name": "abc",
"email": "abc@xyz.com"
"address": {
"city": "Gurgaon",
"state": "Haryana"
}
}
Теперь я создаю источник данных, индекс и индексатор для этой коллекции, используя Azure Rest Apis.
Источник данных
def create_datasource():
request_body = {
"name": 'users-datasource',
"description": "",
"type": "cosmosdb",
"credentials": {
"connectionString": "<db conenction url>"
},
"container": {"name": "users"},
"dataChangeDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName": "_ts"
}
}
resp = requests.post(url="<create-datasource-api-url>", data=json.dumps(request_body),
headers=headers)
Индекс для вышеуказанного источника данных
def create_index(config):
request_body = {
'name': "users-index",
'fields': [
{
'name': 'name',
'type': 'Edm.String'
},
{
'name': 'email',
'type': 'Edm.DateTimeOffset'
},
{
'name': 'address',
'type': 'Edm.String'
},
{
'name': 'doc_id',
'type': 'Edm.String',
'key': True
}
]
}
resp = requests.post(url="<azure-create-index-api-url>", data=json.dumps(request_body),
headers=config.headers)
Теперь индексатор для вышеуказанного источника данных и индекса
def create_interviews_indexer(config):
request_body = {
"name": "users-indexer",
"dataSourceName": "users-datasource",
"targetIndexName": users-index,
"schedule": {"interval": "PT5M"},
"fieldMappings": [
{"sourceFieldName": "address.city", "targetFieldName": "address"},
]
}
resp = requests.post("create-indexer-pi-url", data=json.dumps(request_body),
headers=config.headers)
Это создает индексаторбез каких-либо исключений, но когда я проверяю полученные данные на портале Azure для users-indexer
, поле address
имеет значение null
и не получает никакого значения из сопоставления полей address.city
, которое предоставляется при создании индексатора.
Я также попробовал следующий код в качестве отображения, но он также не работает.
"fieldMappings": [
{"sourceFieldName": "/address/city", "targetFieldName": "address"},
]
Документация Azure также ничего не говорит об этом типе отображения. Так что если кто-нибудь может мне помочь в этом, это будет очень цениться.