当前位置: 首页 > 知识库问答 >
问题:

如何使用嵌套elasticsearch查询一种类型的数据限制

武睿
2023-03-14

在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”参数。

共有1个答案

齐元章
2023-03-14

您可以在构造函数中为SearchRequest指定索引和类型

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
            }
          }
        }
      ]
    }
  }
}
 类似资料:
  • 我试图创建一个嵌套查询,它将过滤掉一些带有特定术语的文档。在本例中,我试图过滤掉在user.first中有匹配术语的文档。数据示例: 我的查询没有得到所需的结果,因为它返回给我所有未筛选的记录。我尝试使用: 我希望这里得到与过滤器不匹配的文档。在这种情况下,它应该只返回第二个文档。做这件事的正确方法是什么?

  • 问题内容: 我在获取与Elasticsearch一起使用的嵌套查询时遇到问题(如果我删除了查询字符串之一,则可以使用)。我要解决的问题是我有一个包含关闭列表的文档(关闭)。我想在条件满足另一个值的闭包列表中搜索一个值。那只是从argan = 1的闭包中获得价值 我正在得到这个错误响应; 我的映射如下所示。 有人知道我在做什么错吗? 问题答案: 您的查询不是有效的查询。您需要使用适当的复合查询将其他

  • 问题内容: 我正在尝试使用query_string编写查询以检索嵌套对象的数据查询。 我想做的查询的一个例子是: 其中“ a”是嵌套对象,“ id”是“ a”的字段。 我知道我可以使用嵌套查询成功地执行此任务,编写如下查询: 但是,我想避免这种情况。我不想自己弄清楚用户正在搜索嵌套字段并修改查询。我尝试使用“ fields”参数,但它似乎不适用于嵌套对象。 是否可以使用“ query_string

  • 问题内容: 我正在开发一个使用Postgres 数据类型的Rails应用程序。我在名为的表中有一个JSON列。假设我有多个这样的条目: 我想做的是返回具有相同唱片集,src和背景的条目的不同组合(注意:在节点内,数组元素的顺序无关紧要)。例如,查询应将条目1,3作为一组进行匹配,将条目2与另一组进行匹配,依此类推。目标是找到前3个最常见的组合。我知道如何使用Ruby来执行此操作,但是我必须查询大量

  • 问题内容: 我想使用ES进行图书搜索。因此,我决定将作者姓名和标题(作为嵌套文档)放入索引,如下所示: 我不明白的是:如何构造搜索查询,以便在搜索“一二”时仅找到第二本书,而在搜索“二三”时什么也找不到,而在搜索“一”时所有图书呢? 问题答案: 也许是这样的? 该查询基本上说一个文件必须有and 。您可以轻松地重新配置该查询。例如,如果您只想搜索作者,请删除嵌套部分。如果您想要另一本书,请更改嵌套

  • 我正在尝试查询spring data elasticsearch存储库中的嵌套属性。我的存储库如下所示: 域对象Person和Address(无getter/setter)定义如下: 我的测试保存一个人的文档,并尝试使用repository方法读取它。但没有返回任何结果。以下是测试方法: spring data elasticsearch是否支持默认的spring数据查询生成?