【发布时间】:2021-12-05 14:12:56
【问题描述】:
我需要将复杂的查询传递给 Elasticsearch。在这个查询中会有很多范围条件,主要是日期范围。
示例如下:
query = "module : ('mod45') AND code : ('667', '456') AND startTime:[2020-10-18T13:42:17 TO 2021-10-18T13:42:17] AND endTime:[2021-02-18T13:42:17 TO 2021-09-18T13:42:17]"
(
module、code、startTime和endTime是列名)
我有以下 Elasticsearch 功能:
public async Task<IEnumerable<T>> GetQueryStringData<T>(string index, string query) where T : class
{
var client = GetClient();
var response = await client.SearchAsync<T>(s => s
.Index(index)
.Query(x => x.QueryString(a => a.Query(query))).Size(DefaultResultsSize));
return response?.Documents;
}
是否可以更改此功能,使其可以在没有“AND”连接器的情况下接收查询条件列表?
类似这样的:
var queryList = new List<string>();
queryList.Add("module : ('mod45')");
queryList.Add("code : ('667', '456')");
queryList.Add("startTime:[2020-10-18T13:42:17 TO 2021-10-18T13:42:17]");
queryList.Add("endTime:[2021-02-18T13:42:17 TO 2021-09-18T13:42:17]");
编辑:假设我将有 100 个这样的查询,所以 lambda 在这里不起作用
【问题讨论】:
标签: c# elasticsearch query-string nest