Elastic Search.NET -NEST使用(1)


Elastic Search.NET -NEST

Object Initializer 语法去构造查询#

Match All query#

最简单的查询应该就是 match_all 了,这种查询会返回所有的文档,并给每份文档的 _score 统一赋值为 1.0

匹配的文档并不是都会在一次响应中全部返回,默认情况下只返回前十份。你可以使用 fromsize 来将结果分页

var searchResponse = client.Search<Project>(s => s
    .Query(q => q
        .MatchAll()
    )
);

上面使用 Fluent API 来描述查询。

NEST 还公开了一种 Object Initializer 语法去构造查询

var searchRequest = new SearchRequest<Project>
{
    Query = new MatchAllQuery()
};

searchResponse = client.Search<Project>(searchRequest);

Search request parameters#

search request 有一些可用的参数,你可以参阅 search 以获得详细的信息。

以下是一个示例:

            var searchRequest = new SearchRequest<Tmx2ESModel>();
            searchRequest.From = page;
            searchRequest.Size = size;
            var list = new List<QueryContainer>();
            //optional
            if (!string.IsNullOrWhiteSpace(inModel.ClientGuid))
            {
            	//精准查询使用keyword
                var clientGuid = new MatchQuery() { Field = Infer.Field<Tmx2ESModel>(f => f.ClientGuid.Suffix("keyword")), Query = inModel.ClientGuid };
                list.Add(clientGuid);
            }
             searchRequest.Query = new BoolQuery() { Must = list };

            var searchResponse = ESClient.Client.SearchAsync<Tmx2ESModel>(searchRequest);

在net core 注册ES#

添加ESSever

/// <summary>
    /// 访问ElasticSearch服务类
    /// </summary>
    public class ESSever : IESSever
    {
        /// <summary>
        /// Linq查询的官方Client
        /// </summary>
        public IElasticClient ElasticLinqClient { get; set; }
        /// <summary>
        /// Js查询的官方Client
        /// </summary>
        public IElasticLowLevelClient ElasticJsonClient { get; set; }
        public ESSever(IConfiguration configuration)
        {
            var uris = configuration["ElasticSearchContext:ESUri"].Split(",").ToList().ConvertAll(x => new Uri(x));
            var connectionPool = new StaticConnectionPool(uris);//配置请求池
            var settings = new ConnectionSettings(connectionPool).RequestTimeout(TimeSpan.FromSeconds(30));//请求配置参数
            settings.DisableDirectStreaming().DefaultIndex(configuration["ElasticSearchContext:ESIndexName"]);
            this.ElasticJsonClient = new ElasticLowLevelClient(settings);//json请求客户端初始化
            this.ElasticLinqClient = new ElasticClient(settings);//linq请求客户端初始化
        }

        /// <summary>
        /// Creates the Tmx2ESModel asynchronous.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public Task<Nest.CreateResponse> CreateAsync(Tmx2ESModel model)
        {
            return ElasticLinqClient.CreateDocumentAsync(model);
        }
    }

在startup里面在ConfigureServices下面添加如下代码即可

services.AddSingleton<IESSever, ESSever>();

参考:#

【三】在Asp.Netcore上使用ElasticSearch

作者:【唐】三三

出处:https://www.cnblogs.com/tangge/p/14885581.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   【唐】三三  阅读(640)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2016-06-15 数据结构和算法 – 11.高级排序算法(上)
2014-06-15 日期的常规运用
2011-06-15 9章 表单[js] —— javaScript宝典
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示