elasticsearch - ElasticSearch NEST在MVC应用程序的序列化请求中添加$ type

标签 elasticsearch nest

我正在尝试从MVC应用程序使用NEST,但是我将请求序列化为错误:

iisexpress.exe Error: 0 : NEST POST http://localhost:9200/_search (00:00:00.8188240):
StatusCode: 400, 
    Method: POST, 
    Url: http://localhost:9200/_search, 
    Request: {
  "$type": "Nest.SearchDescriptor`1[[System.Object, mscorlib]], Nest",
  "aggs": {
    "Period": {
      "$type": "Nest.AggregationDescriptor`1[[System.Object, mscorlib]], Nest",
      "date_histogram": {
        "$type": "Nest.DateHistogramAggregationDescriptor`1[[System.Object, mscorlib]], Nest",
        "field": "Timestamp",
        "interval": "day",
        "format": "yyyy-MM-dd"
      }
    }
  }
}

查询非常简单:
        var cs2 = new ConnectionSettings(new Uri("http://localhost:9200")).EnableTrace();
        var client = new ElasticClient(cs2);

        var res3 = client.Search<object>(q =>q.Aggregations(agg =>
                agg.DateHistogram("DayAgg", t => t.Field("Timestamp").Interval("day"))));

完全相同的代码在控制台应用程序中可以正常工作,因此我认为这可能与序列化有关,因为在糟糕的情况下会添加“$ type”属性。

最佳答案

找到相关问题:Serialization error with Elasticsearch NEST/C#

根本原因是以下设置:

config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Objects;

现在有一个支持设置的新api:SetJsonSerializerSettingsModifier
        var cs2 = new ConnectionSettings(new Uri("http://localhost:9200"))
            .SetJsonSerializerSettingsModifier(settings => settings.TypeNameHandling = TypeNameHandling.None)
            .EnableTrace();

关于elasticsearch - ElasticSearch NEST在MVC应用程序的序列化请求中添加$ type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966217/

相关文章:

java - ElasticSearch 自定义分析器大字符串字段

java - Elasticsearch Java Api 设置索引设置

elasticsearch - Elasticsearch 中的多 -"match-phrase"查询

c# - 使用 ElasticSearch Nest 索引动态对象 - StackOverflow Exception

elasticsearch - Elasticsearch `scan`和 `scroll`之后的文档计数不正确,然后 `refresh`和 `flush`

elasticsearch - 无法安装 Elasticsearch 插件

elasticsearch - Elasticsearch不止一个应该,必须和结合在一起

elasticsearch - 将模式分析器添加到新索引

elasticsearch - 建议字段数组

javascript - Nest 无法解析 UserService 的依赖关系