ElasticLinq似乎没有使用正确的URL

时间:2014-12-05 19:47:09

标签: elasticlinq

我有一个问题需要一个非常简单的ElasticLinq搜索来返回结果。问题似乎是它向ElasticSearch发送了一个对搜索网址不正确的网址。这是我尝试过的:

var connection = new ElasticConnection(new Uri("http://localhost:9200"), index: "mytypes");
var context = new ElasticContext(connection);
var results = (from a in context.Query<MyType>() select a).Take(10).ToArray();

当我执行最后一行时,这是我在Fiddler中看到的URL:

http://localhost:9200/mytypes/mytypes/_search

问题似乎是mytypes在URL中使用了两次而不是一次。

我还尝试过不向ElasticConnection构造函数提供默认索引,在这种情况下,搜索网址如下:

http://localhost:9200/_all/mytypes/_search

在这两种情况下,我都没有得到任何结果。如果我使用

提交查询
http://localhost:9200/mytypes/_search

我得到了结果。

如何让ElasticLINQ使用正确的搜索网址?

1 个答案:

答案 0 :(得分:2)

URL中的第二个mytypes是Query()

中的强T类型

默认约定CLR类型等同于Elasticsearch文档类型。如果您不希望这样做,您可以覆盖ElasticMapping的GetDocumentType以返回空字符串或空字符串。

然后,您需要考虑类型的映射方式。还有一些其他选项,例如完全限定字段名称和插入字段存在检查每个选项。 (这就是我们在这里所做的)

public JohnsElasticMapping : ElasticMapping { public string GetDocumentType(Type type) { return null; } } ... var context = new ElasticContext(connection, new JohnsElasticMapping());