c# - 查询Elastic Search时如何添加条件表达式?

标签 c# .net elasticsearch nest

我想知道我们是否可以在从 flex 搜索中获取数据时编写条件表达式。

例如-我的记录中有一列。该列的整数值为1到100。我想获取该列具有偶数值的所有此类记录。当前,我正在这样做,构建所需的值列表,然后将它们传递到TermsQuery中:

 for(int i = 1; i <= 100; i++)
        {
            if (i%2 == 0)
                possibleMatches.Add(i);
        }

        Func<TermsQueryDescriptor<MyClass>, ITermsQuery> TermsQuery = t =>
        {
            return t.Field(f => f.MyColumn).Terms(possibleMatches);
        };

        var results = collection.Search(s =>
                      s.Index(MyIndex).Type(MyElasticsearchType)
                     .Query(qu=>qu.Terms(TermsQuery));

是否可以在条件查询或某些其他查询类型中编写条件表达式?说像
t.Field(f=> f.MyColumn%2 == 0)

最佳答案

用建议的方式编写条件表达式是不可能的。您有两种选择:

  • 使用a script query并将条件写入Painless scripting language
  • 索引MyColumn值是奇数还是偶数到一个单独的字段中。

  • 第一种方法更灵活,而第二种方法将表现更好。

    关于c# - 查询Elastic Search时如何添加条件表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590355/

    相关文章:

    ElasticSearch - 如何使用 API 更新进行更新

    php - 如何将 MySQL 搜索条件转换为 Elasticsearch 查询

    c# - 使用通用接口(interface)处理 ONNX/ML.NET 模型

    c# - 具有 Multi-Tenancy 数据访问的 Web API 身份验证

    c# - 在 C# 中读取时,如何从 C++ 中删除字符串\0

    .net - 什么是 .NET 对象生命周期?

    .net - 编写异步单点触控代码

    c# - 如何从 CheckedListBox 中获取选中项的值?

    c# - In 和 Out 属性在 .NET 中如何工作?

    java - Elastic Search 7高级客户端使用映射创建索引