【问题标题】:Elasticsearch.Net 1.0.2 + NEST 1.0.2 not working correctly?Elasticsearch.Net 1.0.2 + NEST 1.0.2 无法正常工作?
【发布时间】:2016-12-20 16:02:22
【问题描述】:

我使用以下查询:

var searchResults = client.Search<Contact>(s => s
            .Index("someIndex")
            .From(0)
            .Size(20)
            .AllTypes()
            .MatchAll()
            .Query(q => q
                .Bool(bq => bq
                    .Must(mb => mb
                        .QueryString(qs => qs
                            .DefaultField(c => c.ValueCollection.Channel)
                            .Query("E-Mail")
                        )
                    )
                )
            )
        );

当我注释掉 .Query() 部分时,我按预期获得了 20 次点击,但使用 .Query() 部分总是有 0 次点击。

使用 elastichead 我尝试了同样的方法,它生成了这个 JSON:

{
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "E-Mail",
            "default_field": "contact.ValueCollection.Channel"
          }
        }
      ]
    }
  }
}

它会产生 20 次点击。

然后我检查了 ConnectionStatus.Request 和 JSON 不同:

{
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "E-Mail",
            "default_field": "valueCollection.channel" <--- WRONG!!!
          }
        }
      ]
    }
  }
}

default_field 生成错误。我做错了什么?

【问题讨论】:

    标签: .net json elasticsearch nest elasticsearch-net


    【解决方案1】:

    发现了一些东西:

            var settings = new ConnectionSettings(uri)
                .SetDefaultPropertyNameInferrer(p => p);
    

    这可以告诉 NEST 不要使用 camelCase 属性名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      相关资源
      最近更新 更多