c# - 如何使用nest elasticsearch查询一种类型的数据限制

标签 c# .net elasticsearch nest

在 NEST 2.x 中,我编写了代码来查询数据,如下所示:

var query = new QueryContainer();
query = query && new TermQuery { Field = "catId", Value = catId };
query = query && new NumericRangeQuery { Field ="price", GreaterThan = 10 };

var request =new SearchRequest<Project>
{
    From = 0,
    Size = 100,
    Query = query,
    Sort = new List<ISort>
            {
                new SortField { Field = "field", Order = SortOrder.Descending },
                ...
            },
    Type?? //problem comes here, how to specify type??
}

var response = _client.Search<Project>(request);

我的索引中有不止一种类型,我想查询其中一种类型的数据。(就像查询数据库中的表数据之一),我希望在SearchRequest对象初始值设定项中有一个“Type”参数。

最佳答案

您可以指定indices并在构造函数中键入 SearchRequest<T>()

var catId = 1;

var query = new QueryContainer(new TermQuery { Field = "catId", Value = catId });
query = query && new NumericRangeQuery { Field = "price", GreaterThan = 10 };

var request = new SearchRequest<Project>("index-name", Types.Type(typeof(Project), typeof(AnotherProject)))
{
    From = 0,
    Size = 100,
    Query = query,
    Sort = new List<ISort>
        {
            new SortField { Field = "field", Order = Nest.SortOrder.Descending },
        }
};

var response = client.Search<Project>(request);

将生成以下查询

POST http://localhost:9200/index-name/project%2Canotherproject/_search?pretty=true 
{
  "from": 0,
  "size": 100,
  "sort": [
    {
      "field": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "catId": {
              "value": 1
            }
          }
        },
        {
          "range": {
            "price": {
              "gt": 10.0
            }
          }
        }
      ]
    }
  }
}

关于c# - 如何使用nest elasticsearch查询一种类型的数据限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37177404/

相关文章:

c# - EmguCV中图像之间的乘法运算

c# - 如何将异步操作与 .NET 4 中的任务并行库链接起来?

c# - 正则表达式查找给定范围内 5 个连续数字的一个或多个实例

.net - 我什么时候应该使用结构?

django - 在 SearchQuerySet 结果 Haystack 中获取外键对象

c# - 如何在工作单元 TransactionScope 内启用RetryOnFailure?

c# - UserNamePasswordValidator 中的客户端 IP 地址

c# - 异步编程并在循环中等待

elasticsearch - elasticsearch过滤查询不起作用

elasticsearch - 如何存储有关用户已阅读哪些通知的信息?