c# - 尝试使用 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。
解决方案
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; }
}
推荐阅读
- java - 为什么 Java 和 Go 都在写之前锁定套接字?
- javascript - 如何在抽屉 headerRight 图标按钮中打开模式?
- javascript - 排除 node_module 被写入 webpack 中的输出文件
- c# - 从自然数生成 5 个长度的唯一代码
- flutter - 在我的 Dart Devtools 时间轴视图中,颤动框架无法缩小
- mongodb - mongoDB数据按范围过滤
- google-cloud-storage - 有没有办法在 hadoop gcs 连接器中禁用 TLS?
- python - odoo中没有演示数据的单元测试
- python - 无法解码加密的 rsa 消息 python3
- flutter - 如何在条纹支付网关颤振中创建客户?