我认为您的问题是您尝试将整个数组传递给查询。相反,您应该将其视为OR表达式。
以下是您应使用的原始查询:
{ "query": { "bool": { "should": [ { "term": {"names": "test" } }, { "term": {"names": "xyz" } } ] } }}并通过C#代码实现这一目标。首先,我定义了辅助函数:
private static QueryContainer TermAny<T>(QueryContainerDescriptor<T> descriptor, Field field, object[] values) where T : class{ QueryContainer q = new QueryContainer(); foreach (var value in values) { q |= descriptor.Term(t => t.Field(field).Value(value)); } return q;}现在查询:
string[] values = new[] { "test", "xyz" };client.Search<A>(x => x.Query( q => q.Bool( b => b.Should(s => TermAny(s, "names", values)))));


