Характеристики подсказок по завершению работы клиента .asticsearch .net - PullRequest
0 голосов
/ 21 мая 2018

Для некоторых запросов с использованием клиента Nest или Elasticsearch.Net время ответа превышает 500 мс.При прямом использовании http-клиента или интерфейса кибаны тот же запрос занимает около 1-2 мс.Это происходит, если в базе данных очень мало документов.

Я использую следующие настройки на локальном хосте:

PUT suggestions
{
  "settings": {
    "number_of_shards": 1, 
    "number_of_replicas": 0
  },
  "mappings": {
    "suggestionelement": {
      "properties": {
        "suggest": {
          "type": "completion",
          "max_input_length": 100
        }
      }
    }
  }
}

И индексирую следующие документы:

POST suggestions/suggestionelement
{
  "suggest": {
    "input": "this is just some text for suggestion a",
    "weight": 1
  }
}

POST suggestions/suggestionelement
{
  "suggest": {
    "input": "this is just some text for suggestion b",
    "weight": 2
  }
}

POST suggestions/suggestionelement
{
  "suggest": {
    "input": "this is just some text for suggestion c",
    "weight": 3
  }
}

POST suggestions/suggestionelement
{
  "suggest": {
    "input": "this is just some text for suggestion d",
    "weight": 4
  }
}

POST suggestions/suggestionelement
{
  "suggest": {
    "input": "this is just some text for suggestion e",
    "weight": 5
  }
}

При выполнении запроса предложения (завершения) для «это просто какой-то текст» для клиентов Nest или Elasticsearch.Net это занимает более 500 мс.Запуск того же самого из kibana или напрямую с httpclient занимает менее 2 мс

Работал ли он в течение нескольких дней ... есть идеи?

C # код, который я использую:

        var nodes = new Uri[] { new Uri("http://localhost:9200") };
        var connectionPool = new StaticConnectionPool(nodes);

        var connectionSettings = new ConnectionSettings(connectionPool)
           .DefaultIndex("suggestions")
           .RequestTimeout(TimeSpan.FromSeconds(30));

        var searchEngineClient = new ElasticClient(connectionSettings);

        for (int i = 0; i < 10; i++)
        {
            return await searchEngineClient.SearchAsync<SuggestionElement>(s =>
                s.Suggest(ss => ss
                    .Completion("sentence-suggest", c => c
                    .Field(f => f.Suggest)
                    .Prefix("this is just some text for")
                    .Size(1000))));
        };
...