Мы разрешаем клиенту определять пользовательские анализаторы в момент создания индекса. Мы бы предпочли указать это в json, чтобы обеспечить максимальную гибкость и понятность через базовую документацию ElasticSearch.ElasticSearch NEST: Создайте индекс через ElasticClient, указав json
Я хотел бы создать индекс, используя произвольное описание анализаторов, карт и т. Д., Определенных в строке json. Используя чувство, моя команда
PUT /my_index
{
"settings":
{
"analysis":
{
"char_filter" :
{
"my_mapping" :
{
"type" : "mapping",
"mappings" : [".=>,", "'=>,"]
}
},
"analyzer":
{
"my_analyzer":
{
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase" ],
"char_filter" : ["my_mapping"]
}
}
}
}
}
}
В идеале мой код будет выглядеть примерно так
string json = RetrieveJson();
ElasticSearchClient client = InitializeClient();
client.CreateIndexUsingJson(json); // this is the syntax I can't figure out
Почте here пытается сделать это путем создания экземпляра IndexSettings то вызов Add («анализ», JSON), но Add не является функцией для используемой мной версии библиотеки ElasticSearch.
варианты я могу себе представить, включает в себя:
- Как-то с помощью ElasticClient.Raw.IndicesCreatePost или что-то аналогичного
- Десериализации строки JSON в IndexSettings объекта через IndexSettingsConverter.ReadJson(), и последующее применение через ElasticClient.CreateIndex (ICreateIndexRequest)
Оба эти механизма имеют очень скудную документацию.
Я абсолютно стараюсь избегать версий функции лямбда-функции CreateIndex, так как было бы ужасно перевести json пользователя в выражения lamdba, только чтобы сразу перевести их обратно в json глубоко в NEST.
Другие варианты или конкретные примеры # 1 или # 2, приведенные выше, очень ценятся, как рекомендуемый подход к решению этой проблемы.
Какую версию NEST вы используете? – Rob
Я работаю с @mcating. Мы используем версию Nest 1.1.2. – Odrade