Краткая версия : как получить elasti c search для генерации идентификатора объекта и использования его как «_id» и установки его в объекте.
Длинная версия : В успокоительном API я обычно не знаю идентификатор объекта, который вставляю в базу данных. Например, я мог бы создать рецепт для "Паста Салат"
Мой вызов покоя (и тело) будет что-то вроде этого
POST /api/v1/recipe
{
"title": "Pasta Salad",
"details": "..."
}
В C# мое представление для этого что-то вот так ...
public class Recipe
{
public int Id { get; set; }
public string Title { get; set; }
public string Details { get; set; }
}
Я бы не ожидал, что вызывающая сторона узнает, как сгенерировать идентификатор, который не был использован, и я ожидаю, что любой объект, хранящий объект, создаст идентификатор. Обычно в базе данных для этого нужно иметь последовательность / сгенерированный в качестве столбца идентификаторов.
При чтении мне будет возвращен объект со следующим заполненным значением идентификатора.
Как получить asticsearch для генерации свойства Id объекта C# при создании документа, чтобы он был уникальным, а затем использовать его в качестве значения _id в поиске elasti c?
Это то, что у меня есть в ConnectionSettings
var connectionSettings = new ConnectionSettings(elasticSearchUri)
.DefaultIndex(elasticSearchDefaultIndex)
.DefaultMappingFor<Recipe>(r => r.IdProperty(x => x.Id));
Вот как я создаю документ вasticsearch ...
var recipe = new Recipe
{
Title = "Pasta Salad",
Details = "..."
};
var response = await _elasticClient.IndexDocumentAsync(recipe);
Просмотр http://localhost: 9200 / default / _doc / _search
... так чтоasticsearch генерирует уникальное значение «_id», но не устанавливает «Id» для самого объекта
"hits":{"total":{"value":1,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"default","_type":"_doc","_id":"3oeo8W8BfYYLXBBW8Vac","_score":1.0,"_source":{"title":"Pasta Salad","details":"..."}}]}}
Если я включаю идентификатор (в мой C# объект), _id и id объекта установлены в соответствии с ожиданиями, проблема в том, что я не знаю идентификатор во время вставки, как мне выполнить поиск elasti c, чтобы получить следующий уникальный идентификатор?
"hits":{"total":{"value":1,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"default","_type":"_doc","_id":"1","_score":1.0,"_source":{"id":1,"title":"Pasta Salad","details":"..."}}]}}