2014-12-05 21 views
2

我有一個問題,得到一個非常簡單的ElasticLinq搜索來返回結果。問題似乎是它將一個URL發送到ElasticSearch,對於搜索URL是不正確的。以下是我已經試過:ElasticLinq似乎沒有使用正確的URL

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(); 

當我執行最後一行,這裏是我的小提琴手看到的網址:

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

這個問題似乎是mytypes在使用了兩次網址而不只是一次。

我也試過不提供一個默認指數爲ElasticConnection構造,在這種情況下,搜索網址如下:

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

在這兩種情況下,我沒有得到任何結果回來。如果我提交查詢使用

http://localhost:9200/mytypes/_search 

我得到的結果回來。

任何想法如何讓ElasticLINQ使用正確的搜索URL?

回答

2

URL中的第二mytypes是從查詢的強T型()

有一個缺省慣例,一個CLR類型等效於一個Elasticsearch文檔類型。如果您不希望這樣做,則可以改寫ElasticMapping的GetDocumentType以返回空字符串或空字符串。

然後你會想要考慮這些類型是如何映射的。還有其他一些選項,例如完全限定字段名稱並在每個字段中插入字段存在檢查。 (這是我們在這裏做的)

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

相關問題