使用NEST C#Client搜索ElasticSearch

kei*_*sar 6 c# elasticsearch nest

我开始四处寻找搜索引擎,经过一些阅读后我决定选择ElasticSearch(这非常棒:)),我的项目是在C#中,所以我四处寻找客户并开始使用NEST,一切都很简单,但我是在搜索部分有点困惑.

我想搜索特定类型的所有字段,我想出的是以下代码:

elasticClient.Search<NewType>(s => s.Query(q => q.QueryString(d => d.Query(queryString))));
Run Code Online (Sandbox Code Playgroud)

我看到很多字符串查询搜索已被弃用,并希望确保以上是正确的方法(上面没有标记为已弃用...)对于一个简单的任务也有点长,所以也许任何人知道这样做的另一种方式.

谢谢

dri*_*kin 13

我只使用字符串查询版本:使用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);
Run Code Online (Sandbox Code Playgroud)


Mar*_*man 5

只是为了确认

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

搜索的首选方式和感觉有点长的事实是因为您可以使用很多可以在这里使用的选项.我总是愿意建议缩短它!

不推荐使用字符串重载,但不会从NEST中删除.我将更新过时的消息以明确提及此.