您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在elasticsearch.net中按字符串数组查询字符串数组

在elasticsearch.net中按字符串数组查询字符串数组

我认为您的问题是您尝试将整个数组传递给查询。相反,您应该将其视为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)))));
dotnet 2022/1/1 18:15:01 有481人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶