首页 > 解决方案 > 尝试使用 NEST 在 c# 中搜索我的所有弹性搜索文档(未指定字段)中存在的任何单词

问题描述

我正在尝试使用 C# 中的 NEST 在 elasticsearch 中的任何索引或文档中搜索输入词

我已经尝试过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 类

我希望得到一个包含输入单词的文档列表,或者至少是一个文档 ID 列表。

您会发现以下错误:

Elasticsearch.Net.UnexpectedElasticsearchClientException : '无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Int64',因为该类型需要 JSON 原始值(例如字符串、数字、布尔值、null)正确反序列化。要修复此错误,请将 JSON 更改为 JSON 原始值(例如字符串、数字、布尔值、null)或将反序列化类型更改为正常的 .NET 类型(例如,不是整数等原始类型,而不是集合类型像数组或列表)可以从 JSON 对象反序列化。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。路径“hits.total.value”,第 1 行,位置 116。

标签: c#elasticsearchnest

解决方案


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; }
}

推荐阅读