Я пытаюсь отправить некоторые сообщения, подобные этому, в elasticsearch.
id=1
list=asd,bcv mnmn,kjkj, pop asd dgf
поэтому каждое сообщение имеет поле id
, которое представляет собой строку, и поле list
, содержащее список строковых значений.
когда я вставляю это в эластичный и пытаюсь создать диаграммы в кибане, анализатор по умолчанию срабатывает и разделяет мой list
на пробел. Следовательно, это разрушает мои ценности. Я попытался создать сопоставление для своего индекса как
mapping='''
{
"test":
{
"properties": {
"DocumentID": {
"type": "string"
},
"Tags":{
"type" : "string",
"index" : "not_analyzed"
}
}
}
}'''
es = Elasticsearch([{'host': server, 'port': port}])
indexName = "testindex"
es.indices.create(index=indexName, body=mapping)
так что это должно создать индекс с отображением, которое я определил. Теперь я просто отправляю сообщения
es.index(indexName, docType, messageBody)
но даже сейчас Кибана разрушает мои ценности! почему сопоставление не было применено?
и когда я делаю
GET /testindex/_mapping/test
я получил
{
"testindex": {
"mappings": {
"test": {
"properties": {
"DocumentID": {
"type": "string"
},
"Tags": {
"type": "string"
}
}
}
}
}
}
почему карта изменилась? Как я могу указать тип сопоставления, когда я делаю
es.index()