我有一些基於Couch的文檔,其中一些字段值在其中有空格(「Ex。」New York「) 我無法。使用詞語查詢搜索它作爲精確匹配 我發現,搜索這是字段值有空間需要像一些繪圖 - index : not_analysed
如何在不刪除彈性搜索數據的情況下刪除索引的默認映射
,我也做了同樣的
但是,當我從沙發上完成XDCR基礎到彈性搜索.Couch基礎本身創建默認映射。因爲我沒有得到正確的結果。
那麼,有什麼方法可以刪除默認映射而不刪除它的數據?
我有一些基於Couch的文檔,其中一些字段值在其中有空格(「Ex。」New York「) 我無法。使用詞語查詢搜索它作爲精確匹配 我發現,搜索這是字段值有空間需要像一些繪圖 - index : not_analysed
如何在不刪除彈性搜索數據的情況下刪除索引的默認映射
,我也做了同樣的
但是,當我從沙發上完成XDCR基礎到彈性搜索.Couch基礎本身創建默認映射。因爲我沒有得到正確的結果。
那麼,有什麼方法可以刪除默認映射而不刪除它的數據?
請參考下面的代碼。 我已經創建並映射了索引與動態模板,然後做了XDCR。 現在所有的字符串字段都不會被分析。
IIndicesOperationResponse result = null;
if (!objElasticClient.IndexExists(elastic_indexname).Exists)
{
result = objElasticClient.CreateIndex(elastic_indexname, c => c.AddMapping<dynamic>(m => m.Type("_default_").DynamicTemplates(t => t
.Add(f => f.Name("string_fields").Match("*").MatchMappingType("string").Mapping(ma => ma
.String(s => s.Index(FieldIndexOption.NotAnalyzed)))))));
}
從技術上講,您可以更改映射(查看映射API),但實際上我發現它或多或少不可能,因爲與現有映射衝突。
所以:
1)創建索引的任何數據 2)應用的一些想法,從這個博客帖子之前映射:https://www.elastic.co/blog/changing-mapping-with-zero-downtime
我已經得到了我所創建的解決方案 這裏和映射指數與動態模板,然後做了XDCR。現在所有的字符串字段都不會被分析。它爲我工作。
IIndicesOperationResponse result = null;
if (!objElasticClient.IndexExists(elastic_indexname).Exists)
{
result = objElasticClient.CreateIndex(elastic_indexname, c => c.AddMapping<dynamic>(m => m.Type("_default_").DynamicTemplates(t => t
.Add(f => f.Name("string_fields").Match("*").MatchMappingType("string").Mapping(ma => ma
.String(s => s.Index(FieldIndexOption.NotAnalyzed)))))));
}
感謝
穆克什Raghuwanshi