2016-11-23 70 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")))