2016-11-23 59 views
0

我使用的是Elasticsearch 5.0.1,我在.NET 4.5.2下運行我的代碼。我正在使用NEST 5.0 rc lib。Elasticsearch使用條件中的字符串列表進行查詢。 Nest 5.x

我有一個包含字符串列表的類。

public List<string> LastPagesViewed { get; set; } 

我映射使用自動地圖像這樣的CLASE:

.Mappings(m => m.Map<VisitorTest>(map => map.AutoMap())) 

我想要做的就是查詢所有包含「LastPagesViewed」屬性的一個或多個URL的文件。

我做搜索是這樣的:

.Query(q => q 
.Terms(c => c 
    .Name("named_query") 
    .Field(p => p.LastPagesViewed) 
    .Terms(new List<string> { "url1", "url2" })) 

但它無法正常工作。我也嘗試搜索只有部分的網址,如「谷歌」(如果網址是http://www.google.com),但結果相同。

我試着用ints列表(而不是url),它工作,所以我在這裏失蹤?

回答

0

終於明白了!問題在於,我沒有考慮到使用術語搜索時分析儀的影響。一旦我改變查詢來使用匹配,它就會按預期工作。

新的查詢將是這樣的:

.Query(q => q.Match(mq => mq.Field(p => p.LastPagesViewed.First()).Query("http://www.google.com")))