NEST 2.x 条款查询不能接受 2 个参数
NEST 2.x Terms Query cannot accept 2 arguments
如何将下面的 NEST 1.x 表达式重写为 NEST 2.x 或 5.x
var searchResult = _elasticClient.Search<SearchResult>(
request => request
.MinScore(0.7)
.Query(q =>
{
QueryContainer query = null;
query &= q.Terms<int>(t => t.Categories
.SelectMany(s => s.ChildCategories.Select(c => c.Id))
.ToArray(),
categories.Select(c => Convert.ToInt32(c)));
接受 List(),其中包含弹性搜索查询应匹配的 ids 元素
query &= q.Terms(c => c.Field(t => t.Categories.SelectMany(s => s.ChildCategories.Select(d => d.Id))));
This line will below complain about Terms has 1 parameter, but invoked with 2
query &= q.Terms(c => c.Field(t => t.Categories.SelectMany(s => s.ChildCategories.Select(d => d.Id))), new List<int> {1});
更新:
elasticsearch documentation for 1.X 上的最后一个示例包含字段和
qff.Terms(p => p.Country, userInput.Countries) 我想在 NEST 5.x 或 2.x
中实现
Take a look at the Terms query documentation。 terms
查询需要一个包含要匹配的术语和要匹配的术语集合的字段。
可以使用 .Field()
、which can take anything from which a Field
can be inferred 指定要匹配的字段,包括字符串或 Lambda 表达式。
可以使用 .Terms()
指定要匹配的值,这是一个术语集合。
鉴于以下 POCO
public class Project
{
public IEnumerable<string> Tags { get; set; }
}
标签字段上的 terms
查询将是
var searchResponse = client.Search<Project>(s => s
.Query(q => q
.Terms(t => t
.Field(f => f.Tags)
.Terms("tag1", "tag2", "tag3")
)
)
);
如何将下面的 NEST 1.x 表达式重写为 NEST 2.x 或 5.x
var searchResult = _elasticClient.Search<SearchResult>(
request => request
.MinScore(0.7)
.Query(q =>
{
QueryContainer query = null;
query &= q.Terms<int>(t => t.Categories
.SelectMany(s => s.ChildCategories.Select(c => c.Id))
.ToArray(),
categories.Select(c => Convert.ToInt32(c)));
接受 List(),其中包含弹性搜索查询应匹配的 ids 元素
query &= q.Terms(c => c.Field(t => t.Categories.SelectMany(s => s.ChildCategories.Select(d => d.Id))));
This line will below complain about Terms has 1 parameter, but invoked with 2
query &= q.Terms(c => c.Field(t => t.Categories.SelectMany(s => s.ChildCategories.Select(d => d.Id))), new List<int> {1});
更新:
elasticsearch documentation for 1.X 上的最后一个示例包含字段和 qff.Terms(p => p.Country, userInput.Countries) 我想在 NEST 5.x 或 2.x
中实现Take a look at the Terms query documentation。 terms
查询需要一个包含要匹配的术语和要匹配的术语集合的字段。
可以使用 .Field()
、which can take anything from which a Field
can be inferred 指定要匹配的字段,包括字符串或 Lambda 表达式。
可以使用 .Terms()
指定要匹配的值,这是一个术语集合。
鉴于以下 POCO
public class Project
{
public IEnumerable<string> Tags { get; set; }
}
标签字段上的 terms
查询将是
var searchResponse = client.Search<Project>(s => s
.Query(q => q
.Terms(t => t
.Field(f => f.Tags)
.Terms("tag1", "tag2", "tag3")
)
)
);