我們允許客戶端在創建索引時定義自定義分析器。我們希望在json中指定它,通過底層的ElasticSearch文檔提供最大的靈活性和可理解性。ElasticSearch NEST:通過指定json通過ElasticClient創建索引
我想創建一個索引,使用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然後調用添加(「分析」,JSON)要做到這一點後,但添加不是我正在使用的ElasticSearch庫版本的功能。
我可以想像的選項包括:
- 不知何故使用ElasticClient.Raw.IndicesCreatePost或經由IndexSettingsConverter.ReadJson東西類似
- 反序列化JSON字符串成IndexSettings對象(),然後將其通過ElasticClient.CreateIndex(ICreateIndexRequest)
這兩種機制都有很少的文檔。
我絕對試圖避免CreateIndex的lambda函數版本,因爲將用戶的json翻譯成lamdba表達式只是爲了立即將它們轉換回JSON深入NEST。
以上#1或#2的其他選項或具體示例非常感謝,因爲解決此問題的建議方法。
你使用哪個版本的NEST? – Rob 2015-03-13 07:46:39
我使用@mcating工作。我們使用Nest版本1.1.2。 – Odrade 2015-03-13 14:38:02