Я использую ElasticSearch 6.5.4 - в настоящее время я записываю данные один раз в день непосредственно в несколько индексов просто с помощью POST Ajax Call, где идентификатор всегда будет одинаковым. Затем Elastic возвращает мне, что, если идентификатор не существует, документ был создан - или, если идентификатор существует, документ был обновлен.
Теперь я столкнулся с проблемой управления версиями, поскольку значения не обновляются. С помощью расширения ElasticHead я просматриваю детали документов и вижу, что у меня, например, документ хранится как «версия 9», но поля данных, такие как метка времени индекса, по-прежнему принадлежат «версии 1».
Я уже проверил, и я на самом деле не храню все версии - только последние. Elastic просто хранит индекс версий. Поэтому я не совсем уверен, почему, например, отметка времени не обновляется.
Что я хочу, так это в основном отключать управление версиями или как-то сообщать Elastic при каждом вызове публикации, что индексируемый мной документ является текущим, и он должен использовать только текущий для отображения. Все похожие проблемы, которые я обнаружил, точно не повторяют мою проблему, и ни одно из решений не может решить ее.
Эта проблема возникает из-за того, что я использую простой вызов POST Ajax? Может ли это быть решено с использованием Logstash в качестве конвейера загрузки (что я планирую сделать в любом случае в дальнейшем ходе проекта)?
Пример:
Data sent to Elastic
ajax.call - method.post - Result: 200
https://elasticURL.com/article/123456
{
"customer": "Customer",
"source": "Source",
"categories": "/Category1/Category2/Category3/",
"title": "My Title",
"articletype": "MyType",
"rating": 100,
"ratingnormalized": 5,
"views": 1234,
"author": "Author",
"timeindexed": "21/1/2019 10:00",
"timeindexedDate": "21/1/2019",
"timecreated": "13/10/2018 11:22",
"timecreatedDate": "13/10/2018 ",
"timeupdated": "13/10/2018 11:22",
"timeupdatedDate": "13/10/2018 ",
"url": "https://www.google.com",
"category1": "Category: 1",
"category2": "Category: 2",
"category3": "Category: 3",
"text": "MyText ",
"html": "<html></html>"
}
Data stored in Elastic
{
"_index": "index_name",
"_type": "article",
"_id": "123456",
"_version": 3,
"_score": 1,
"_source": {
"customer": "Customer",
"source": "Source",
"categories": "/Category1/Category2/Category3/",
"title": "My Title",
"articletype": "MyType",
"rating": 100,
"ratingnormalized": 5,
"views": 1234,
"author": "Author",
"timeindexed": "04/1/2019 01:05",
"timeindexedDate": "04/1/2019",
"timecreated": "13/10/2018 11:22",
"timecreatedDate": "13/10/2018 ",
"timeupdated": "13/10/2018 11:22",
"timeupdatedDate": "13/10/2018 ",
"url": "https://www.google.com",
"category1": "Category: 1",
"category2": "Category: 2",
"category3": "Category: 3",
"text": "MyText ",
"html": "<html></html>"
}
}
Создание индекса
PUT - https://elasticURL.com/index_name
{
"settings" : {
"index" : {
"number_of_shards" : 5,
"number_of_replicas" : 0
}
}
}
Отображение индекса
PUT - https://elasticURL.com/index_name/_mappings
{
"properties" : {
"customer" : { "type" : "text" },
"source" : { "type" : "text" },
"categories" : { "type" : "text" },
"articletype" : { "type" : "text" },
"title" : { "type" : "text" },
"rating" : { "type" : "integer" },
"ratingnormalized" : { "type" : "integer" },
"views" : { "type" : "integer" },
"author" : { "type" : "text" },
"timeindexed" : { "type" : "date", "format" : "dd/MM/yyyy HH:mm"},
"timeindexeddate" : { "type" : "date", "format" : "dd/MM/yyyy"},
"timecreated" : { "type" : "date", "format" : "dd/MM/yyyy HH:mm"},
"timecreateddate" : { "type" : "date", "format" : "dd/MM/yyyy"},
"timeupdated" : { "type" : "date", "format" : "dd/MM/yyyy HH:mm"},
"timeupdateddate" : { "type" : "date", "format" : "dd/MM/yyyy"},
"url" : { "type" : "text" },
"category1" : { "type" : "text" },
"category2" : { "type" : "text" },
"category3" : { "type" : "text" },
"text" : { "type" : "text" },
"html" : { "type" : "text" }
}
}
+ keyword mapping for text fields, eg
"text": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
Чтобы подвести итог это быстро;
Например, поле timeindexed не обновляет новый POST для обновления данных. Только версия увеличивается. Индекс эластичности показывает документы: 4,488 (5,320).