首页 > 解决方案 > 通过 Nest 客户端运行查询与查询搜索查询?

问题描述

我是 ElasticSearch 的新手,正在编写基本的搜索查询。我希望能够在全文字段中搜索关键字。我知道这可以使用查询搜索查询来完成,但我不清楚这是如何使用 Nest 客户端完成的。

var searchResponse = client.Search<mdl.Event>(s => s
                .Query(q => q
                .Match(m => m
                    .Query(search.Text))
                && q
                .DateRange(r => r
                    .Field(f => f.CreatedTimeStamp)
                    .GreaterThanOrEquals(search.From)
                    .LessThanOrEquals(search.To))));

这是我的代码。基本上,我正在尝试在某个日期之间搜索一些文本,但我相信上面不是在正文中搜索代码。有没有办法可以轻松更改此查询以便搜索整个身体?还是它已经这样做了,我不知道?

我正在搜索集群中的事件。一个事件的示例可能如下所示:

{
  "text": "string",
  "includeExecution": true,
  "processIds": "string",
  "statuses": [
    "string"
  ],
  "space": "string",
  "from": "2021-09-17T01:40:03.796Z",
  "to": "2021-09-17T01:40:03.796Z",
  "take": 0,
  "skip": 0,
  "orderBy": "string",
  "orderByDescending": true
}

就我而言,我希望能够搜索“字符串”一词并显示此结果(因为“字符串”存在于空间中)

标签: elasticsearch

解决方案


尝试使用这样的QueryString查询。search.Text这将在您文档的所有字段中搜索。

var searchResponse = client.Search<mdl.Event>(s => s
            .Query(q => q
                .QueryString(qs => qs
                    .Query(search.Text))
                && q
                .DateRange(r => r
                    .Field(f => f.CreatedTimeStamp)
                    .GreaterThanOrEquals(search.From)
                    .LessThanOrEquals(search.To))));

推荐阅读