Как загрузить этот вложенный словарь в ElasticSearch в Python? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть данные, которые выглядят так:

df =     {
        "3498573": [
            {
                "274985537": 0.43453,
                "274933900": 0.5344,
                "27845502": 0.32359
            }
        ],
        "4394879": [
            {
                "932847": 0.23984734
                "3454325": 0.2398472
            }
        ]
    }

Это вложенный словарь внутри списка внутри словаря.

Другой способ его представления:

{
    "customer_id": [
        {
            "p_id": score,
            "p_id": score,
            "p_id": score
        }
    ],
    "customer_id": [
        {
            "p_id": score
            "p_id": score
        }
    ]
}

Мне интересно, как индексировать эти данные в ElasticSearch.Я использую Python API Flexiblesearch и создал отображение следующим образом:

request_body = {
    "settings" : {
        "number_of_shards": 5,
        "number_of_replicas": 1
    },

    'mappings': {
        'recommended': {
            'properties': {
                'customer_id': {
                    "type": "nested",
                    "properties": {
                        "master_product_id": {
                            "type": "text"
                        },
                        "score": {
                            "type": "integer"
                        }
                    }
                }
            }}}
}
print("creating 'example_index' index...")
es.indices.create(index = 'example_index2', body = request_body)

Я получаю ошибку <400> при попытке напрямую загрузить данные следующим образом:

requests.post(address, data=df, headers=headers)

Нужно ли мне формировать данные по-другому, как показано ниже, для их загрузки?Если так, то как мне придать ему такую ​​форму?

nested = ({

    "customer_id": "13984209",
    "recommended_products": [
        {
            "master_product_id": "945873",
            "score": 0.94879437
        }
    ],
    "customer_id": "309248",
    "recommended_products": [
        {
            "master_product_id": "2383",
            "score": 0.36367326
        }
    ]

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...