Попытка поиска любого слова, присутствующего во всех моих документахasticsearch (поле не указано) в c #, используя NEST - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь найти входное слово в любом индексе или документе вasticsearch, используя NEST в c #

Я уже пробовал simple_string_query, match_all, _search (самый простой запрос),ничего из этого не сработало, и я каждый раз получаю одно и то же сообщение об ошибке.

var conn = new ConnectionSettings(new Uri("<elasticsearchEndpoint>))
                .DefaultIndex(model.Index)
                .DefaultTypeName(model.Type);
var client = new ElasticClient(conn);
var res = client.Search<dynamic*>(c=>c
                .AllIndices()
                .AllTypes()
                .Query(q=>q
                    .QueryString(qs=>qs.Query(model.Query)
                )
));

Я также пытался использовать класс myObject

Я ожидаю получить список документов, содержащий входное словоили хотя бы список идентификаторов документов.

Ниже приведена ошибка:

Elasticsearch.Net.UnexpectedElasticsearchClientException: 'Невозможно десериализовать текущий объект JSON (например, имя {}":" value "}) в тип 'System.Int64', потому что для корректной десериализации тип требует JSON-примитивное значение (например, string, number, boolean, null).Чтобы исправить эту ошибку, либо измените JSON на примитивное значение JSON (например, string, number, boolean, null) или измените десериализованный тип так, чтобы это был нормальный тип .NET (например, не примитивный тип, такой как целое число, а не тип коллекции).как массив или список), который может быть десериализован из объекта JSON.JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализоваться из объекта JSON.Путь 'hit.total.value', строка 1, позиция 116. '

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Мне кажется, что вы используете клиент NEST 6.x против Elasticsearch 7.x.Это не будет работать, потому что они не совместимы;в этом случае я подозреваю, что это изменение поля "total" в поисковом ответе, которое не может быть десериализовано, поскольку в 7.x это object, а в 6.x - long.

Пожалуйста, используйте клиент NEST 7.x с Elasticsearch 7.x, который совместим.Последний на данный момент это 7.0.0-бета1 .

0 голосов
/ 13 июня 2019
public class ApiModel
{
    [Required]
    [Display(Name = "Index")]
    public string Index { get; set; }
    [Required]
    [Display(Name = "Type")]
    public string Type { get; set; }
    [Required]
    [Display(Name = "Id")]
    public string Id { get; set; }
    public dynamic Body { get; set; }
    public string sent_body { get; set; }
    public bool Request { get; set; }
    public string Method { get; set; }
    public string Rody { get; set; }
    public string Query { get; set; }
}
...