Использование библиотеки Elasticsearch Nest выдает ошибку при создании токена-фильтра по индексу - PullRequest
0 голосов
/ 08 мая 2018

Мне нужно создать фильтр токенов Synonym в Elasticsearch с использованием библиотеки Nest, но он продолжает выдавать ошибку.

     SynonymTokenFilter synonymFilter = new SynonymTokenFilter {
                    Format = SynonymFormat.Solr,
                    SynonymsPath= "synonym.txt",
                    Tokenizer="whitespace",
                };
isettings.Analysis.TokenFilters.Add("mysynonym",synonymFilter);
 isettings.NumberOfReplicas = 1;
            isettings.NumberOfShards = 2;

            IndexState indexConfig = new IndexState
            {
                Settings = isettings,
            };

все остальное работает, если я закомментирую эту строку isettings.Analysis.TokenFilters.Add("mysynonym",synonymFilter);

выдает ошибку «объект не установлен как экземпляр объекта».

Мне очень нужна помощь в этом, я впервые использую библиотеку Nest

Я использую ElasticSearch 6 и последнюю версию библиотеки Nest.

1 Ответ

0 голосов
/ 08 мая 2018

Похоже, либо Analysis на isettings, либо TokenFilters на isettings.Analysis равно нулю. Вот пример, который работает

var isettings = new IndexSettings
{
    Analysis = new Analysis
    {
        TokenFilters = new TokenFilters()
    }
};

SynonymTokenFilter synonymFilter = new SynonymTokenFilter
{
    Format = SynonymFormat.Solr,
    SynonymsPath = "synonym.txt",
    Tokenizer = "whitespace",
};
isettings.Analysis.TokenFilters.Add("mysynonym", synonymFilter);
isettings.NumberOfReplicas = 1;
isettings.NumberOfShards = 2;

IndexState indexConfig = new IndexState
{
    Settings = isettings,
};

var client - new ElasticClient();

client.CreateIndex(new CreateIndexRequest("index", indexConfig));

, который создает следующий запрос JSON

PUT http://localhost:9200/index
{
  "settings": {
    "index.number_of_replicas": 1,
    "analysis": {
      "filter": {
        "mysynonym": {
          "synonyms_path": "synonym.txt",
          "format": "solr",
          "tokenizer": "whitespace",
          "type": "synonym"
        }
      }
    },
    "index.number_of_shards": 2
  }
}
...