【发布时间】:2017-01-08 08:10:20
【问题描述】:
我的正确索引路径是POST: /foo/_search,但下面的代码命中POST: /foo/bar/_search。
var node = new Uri("http://elasticsearch-server.com:9200");
var settings = new ConnectionSettings(node);
settings.DefaultIndex("foo");
var client = new ElasticClient(settings);
var response = client.Search<Bar>(s => s
.Query(q => q.Term(o => o.userName, "test"))
);
// POCO for response fields
public class Bar
{
public int userId { get; set; }
public string userName { get; set; }
public DateTime createdTime { get; set; }
}
上面的代码response返回下面的消息;
通过对 POST 的成功低级调用构建的有效 NEST 响应:/foo/bar/_search
如何正确设置搜索路径?
试用 1
当我省略settings.DefaultIndex("foo"); 行时,它会抛出ArgumentException 如下,但是当我设置DefaultIndex() 时,Search<T> 使用T 名称作为第二个路径。
ArgumentException:给定类型的索引名称为空,并且未设置默认索引。使用 ConnectionSettings.MapDefaultTypeIndices() 映射索引名称或使用 ConnectionSettings.DefaultIndex() 设置默认索引。
试用 2 参考documentation,
var settings = new ConnectionSettings(node)
.MapDefaultTypeIndices(m => m.Add(typeof(Bar), "foo"));
以上代码在响应中返回相同的结果。
通过对 POST 的成功低级调用构建的有效 NEST 响应:/foo/bar/_search
【问题讨论】:
-
我有相同的代码,而且效果很好。你能试试这个sn-p的代码吗: var settings = new ConnectionSettings(new Uri("elasticsearch-server.com:9200")).DefaultIndex("foo&qu… client = new ElasticClient(settings);
-
@Soren // 感谢您的评论。嗯......仍然有同样的问题。它使用 POCO 名称作为第二条路径。我需要进一步调查。
标签: c# elasticsearch nest