2015-06-19 2 views
0

Я слежу за сообщением Creating an index Nest и пытается обновить настройки моего индекса. Все работает отлично, но фильтр html_strip не зачищает HTML. Мой кодНастройки индекса обновления гнезда

var node = new Uri(_url + ":" + _port); 
var settings = new ConnectionSettings(node); 
settings.SetDefaultIndex(index); 
_client = new ElasticClient(settings); 

//to apply filters during indexing use folding to remove diacritics and html strip to remove html 
_client.UpdateSettings(
     f = > f.Analysis(descriptor = > descriptor 
       .Analyzers(
         bases = > bases 
         .Add("folded_word", new CustomAnalyzer 
         { 
         Filter = new List <string> { "icu_folding", "trim" }, 
           Tokenizer = "standard" 
         } 
         ) 
         ) 
       .CharFilters(
         cf = > cf.Add("html_strip", new HtmlStripCharFilter()) 
         ) 
       ) 
     );  

ответ

2

Вы получаете сообщение об ошибке:

Can't update non dynamic settings[[index.analysis.analyzer.folded_word.filter.0, index.analysis.char_filter.html_strip.type, index.analysis.analyzer.folded_word.filter.1, index.analysis.analyzer.folded_word.type, index.analysis.analyzer.folded_word.tokenizer]] for open indices[[my_index]]

Перед тем, как будет пытаться обновить настройки, закройте индекс первого, параметры обновления и открыть после этого. Have a look.

client.CloseIndex(..); 

client.UpdateSettings(..); 

client.OpenIndex(..); 

UPDATE

Добавить html_strip обугленного фильтр для вас собственный анализатор:

.Analysis(descriptor => descriptor 
        .Analyzers(bases => bases.Add("folded_word", 
         new CustomAnalyzer 
         { 
          Filter = new List<string> { "icu_folding", "trim" }, 
          Tokenizer = "standard", 
          CharFilter = new List<string> { "html_strip" } 
         })) 
       ) 

Теперь вы можете запустить тест, чтобы проверить, если этот анализатор возвращает правильные символы:

client.Analyze(a => a.Index(indexName).Text("this <a> is a test <div>").Analyzer("folded_word")); 

Выход:

this 
is 
a 
test 

Надеется, что это помогает.

+0

Роб, большое спасибо, ваше предложение работает. Я вижу фильтр, однако при индексировании html не удаляется. – Ismail

+0

@ Вы можете поделиться им с индексом? – Rob

+0

'{ umbracotest: { настройки: { индекс: { UUID: "eb3hMpFrS8qyb3DxHZ4_eg", анализ: { char_filter: { html_strip: { тип: "html_strip" } } }, number_of_replicas: "1", number_of_shards: "5", версия: { создано: "1020099" }} }} } ' – Ismail

Смежные вопросы