使用条件中的字符串列表进行 Elasticsearch 查询。鸟巢 5.x

Elasticsearch Query using list of strings in criteria. Nest 5.x

我使用的是 Elasticsearch 5.0.1,我的代码是 运行.NET 4.5.2。我正在使用 NEST 5.0 rc 库。

我有一个包含字符串列表的 class。

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

我正在使用这样的 AutoMap 映射那个类:

.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" }))

但它不起作用。我还尝试仅搜索 url 的一部分,例如 "google"(如果 url 是 http://www.google.com),但结果相同。

我用一个整数列表(而不是 urls)尝试了这个并且它正在工作,所以我在这里缺少什么?

终于明白了!问题是我在使用术语搜索时没有考虑分析器的影响。一旦我将查询更改为使用匹配项,它就会按预期工作。

新查询将是这样的:

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