Как индексировать модели в трясогузке на поиске azure - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно проиндексировать свои модели на azure, используя платформу Wagtail CMS. У меня написана грубая функциональность, которая обращается к службе AZURE и может создавать индексы на основе жестко закодированных данных.

def createIndex(request):
    endpoint = 'https://service-test.search.windows.net/'
    api_version = '2020-06-30'
    url = endpoint + "indexes?api-version=" + api_version

    index_schema = {
        "name": "hotels-test",  
        "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': 'key*******'}

    response = requests.post(url, headers=headers, json=index_schema)
    index = response.json()

    return HttpResponse(response)

Однако у меня есть куча папок, и в каждой из них есть файл модели. Мне нужно как-то проиндексировать модели, но я не знаю, с чего начать? Может ли кто-нибудь указать мне правильное направление?

Спасибо

1 Ответ

1 голос
/ 05 августа 2020

В

https://github.com/Azure/azure-rest-api-specs/blob/master/specification/search/data-plane/Azure.Search/preview/2020-06-30-Preview/examples/SearchServiceCreateIndex.json

вы можете найти запрос и ответ RestAPI.

Кстати, у нас есть SDK и несколько примеров для этого сценария.

https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/search/azure-search-documents/samples/sample_index_crud_operations.py#L41 -L62

(я работаю в MS в команде SDK)

...