小编use*_*791的帖子

Elasticsearch.Net 和超时

我有一个 4 节点的 elasticsearch 集群。我有一个 .net 控制台应用程序,旨在用来自 sql 的数据填充集群。只要我将添加(或删除)记录的速度保持在相当低的水平,一切都可以正常工作。如果我最终增加线程数,我会在控制台应用程序中看到超时错误。该集群共有 48 个内核,索引一条记录所需的平均时间约为 0.1 秒。

我已经能够让它每秒处理大约 7000 条记录(文档)。我从来没有看到从 elasticsearch.net 抛出的任何表明资源不足的异常。我从未看到任何索引队列超载。服务器的 CPU 峰值永远不会超过 10%。看起来问题不是集群或其配置,而是嵌套连接中的问题。这是我的连接代码:

//set up the es client
Uri node = new    Uri(ConfigurationManager.AppSettings["ESConnectionString"]);
var connectionPool = new SniffingConnectionPool(new[] { node });
ConnectionSettings settings = new ConnectionSettings(connectionPool);
settings.SetDefaultPropertyNameInferrer(p => p); //ditch the camelcase
settings.SniffOnConnectionFault(true);
settings.SniffOnStartup(true);
settings.SniffLifeSpan(TimeSpan.FromMinutes(1));
settings.SetPingTimeout(3000);
settings.SetTimeout(5000);
settings.MaximumRetries(5);
//settings.SetMaximumAsyncConnections(20);
settings.SetDefaultIndex("dummyindex");
settings.SetBasicAuthentication(ConfigurationManager.AppSettings["ESUser"], ConfigurationManager.AppSettings["ESPass"]);
ElasticClient client = new ElasticClient(settings);
Run Code Online (Sandbox Code Playgroud)

我使用 http.basic 身份验证设置了集群,但我尝试打开和关闭它,但没有任何区别。以下是来自 ES 节点的一些相关设置:

discovery.zen.minimum_master_nodes: 2
discovery.zen.fd.ping_timeout: 30s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["CACHE01","CACHE02","CACHE03","CACHE04"]
cluster.routing.allocation.node_concurrent_recoveries: 5 …
Run Code Online (Sandbox Code Playgroud)

timeout elasticsearch nest elasticsearch-net

5
推荐指数
0
解决办法
3587
查看次数

ServiceStack自定义用户身份验证

有没有人有这个问题中所提出的如何使用int RefId的实际示例?

我正在尝试进行身份验证,但是我需要将userAuth数据与我自己的用户表结合使用。问题是我不知道如何将附加参数传递给“ / register”方法。我想我正在寻找类似“ OnAddUser”的事件,该事件使我可以向混合中添加一些其他参数。

我设法使用户注册工作非常迅速,这非常容易。也许问题是这太容易了?我可以看到它的工作原理,但是我不知道如何在它和数据库之间进行转换。

字典方法或RefId方法都可能对我有用,对我而言,如何使用它们都不是很明显。

是否可以完全覆盖创建用户?我发现此代码:

MyServices.cs

看起来好像是在用“ / register”代替创建用户,但是还有其他一些文章建议您不能覆盖ServiceStack DTO,必须使用默认表。

c# authentication servicestack

5
推荐指数
1
解决办法
950
查看次数

.Net Core 2.1 似乎忽略了 modelBuilder.Entity<TEntity>().HasData

我有一个包含模型、服务和 api 项目的 .net 核心项目。我对这个项目的最初目标是让枚举以更“代码优先”的方式工作。我只想能够修改枚举并相应地更新数据库和查找表。在花了太多时间试图弄清楚如何做到这一点之后,我决定创建一个特殊的枚举类并使用“HasData”手动为其设定种子。我以前做过这个,没有遇到过问题。我做的最后一个项目是 .Net Core 2.1。该项目使用的是 2.2。我不知道我是否发现了一个奇怪的错误,或者我只是做错了什么。我的“服务”项目是 DbContext 所在和大部分相关代码所在的地方。

我有一个看起来像的模型:

public class Employee : IEmployee
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Display(Name = "Id")]
    public int Id { get; set; }

    [StringLength(512, ErrorMessage = "The first name cannot be longer than 512 characters")]
    [Display(Name = "First Name")]
    [Required]
    public string FirstName { get; set; }

    [StringLength(512, ErrorMessage = "The last name cannot be longer than 512 characters")]
    [Display(Name = "Last Name")]
    [Required]
    public string LastName { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# enums entity-framework entity-framework-core .net-core

5
推荐指数
1
解决办法
2411
查看次数

c# Nest 和 Elasticsearch 聚合

有谁知道如何使用嵌套进行多次聚合?不幸的是,我发现了很多示例,但它们都不起作用。

这是我所拥有的:

Vehicles fields = new Vehicles();

//create a terms query
var query = new TermsQuery
{
    IsVerbatim = true,
    Field = "VehicleOwnerId",
    Terms = new string[] { 25 },
};

var aggregations = new Dictionary<string, IAggregationContainer>
{
    { "years", new AggregationContainer
        {
            Terms = new TermsAggregation(nameof(fields.Year))
            {
                Field = new Field(nameof(fields.Year))
            }
        }
    }
    //,
    //{ "makes", new AggregationContainer
    //    {
    //        Terms = new TermsAggregation("Make")
    //        {
    //            Field = new Field(nameof(fields.Make))
    //        }
    //    }
    //}
}; …
Run Code Online (Sandbox Code Playgroud)

c# elasticsearch nest

2
推荐指数
1
解决办法
3519
查看次数