一尘不染

使用NEST C#客户端搜索ElasticSearch

elasticsearch

我开始四处寻找搜索引擎,经过一番阅读后,我决定使用ElasticSearch(这是非常了不起的:)),我的项目在C#中,所以我四处寻找客户端并开始使用NEST,一切都很简单,但是我搜索部分有些混乱。

我想搜索 特定类型的 所有字段 ,然后 输入 以下代码:

elasticClient.Search<NewType>(s => s.Query(q => q.QueryString(d => d.Query(queryString))));

我看到许多字符串查询搜索已被弃用,并想确保上面的方法是正确的方式(上面未标记为已弃用…)对于一个简单的任务来说也有点长,所以也许有人知道另一种方法。

谢谢


阅读 491

收藏
2020-06-22

共1个答案

一尘不染

我只使用字符串查询版本:使用C#匿名类型创建查询对象并将其序列化为JSON。

这样,我就可以直接从所有JSON查询示例中进行映射,而无需转换为该“查询DSL”。

Elasticsearch本身发展非常迅速,因此该查询DSL必然缺少某些功能。

编辑:示例:

var query = "blabla";
var q = new
        {
            query = new
            {
                text = new
                {
                    _all= query
                }
            }, 
            from = (page-1)*pageSize, 
            size=pageSize
        };
        var qJson = JsonConvert.SerializeObject(q);
        var hits = _elasticClient.Search<SearchItem>(qJson);
2020-06-22