我使用以下查询:
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
生成错误。我究竟做错了什么? 最佳答案
发现了一些东西:
var settings = new ConnectionSettings(uri)
.SetDefaultPropertyNameInferrer(p => p);
这可以告诉NEST不要使用camelCase属性名称。
关于.net - Elasticsearch.Net 1.0.2 + NEST 1.0.2无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25420669/