问题标签 [elasticsearch-net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
54 浏览

elasticsearch - 如何阻止 Nest 在 QueryRaw 周围附加额外查询

我正在从 0.11 升级到 Nest 1.7。

我的所有查询都是原始 json 格式,并且在升级时,它会在使用我的查询执行原始查询搜索时出现,嵌套附加外部查询,导致失败。

文档说它不会修改字符串,但这并不完全正确 - http://nest.azurewebsites.net/nest/writing-queries.html#raw-strings

初始查询:

使用 Nest 调用:

将查询转换为:

第二个查询显然失败了。有什么简单的方法可以“禁用”这种行为。

我在很大程度上试图避免将一百个查询重写/转换为新的 DSL。

0 投票
1 回答
1237 浏览

elasticsearch - 在 ElasticSearch 放置映射上传递 update_all_types

我们正在升级到 ElasticSearch 2.0,并在 Nest 1.7.0 中遇到了映射问题:我们有两种类型共享一个字段(格式相同):

当我们尝试在启动时为其中一种受影响的类型添加映射时(我们当前PUT每次都在映射),我们得到了这个错误:

我们正在使用此处描述的基于代码的映射,但我没有看到一种方法可以在不借助Raw我们客户端的属性的情况下使用以下方法将查询字符串挂起:

_client.Raw.IndicesPutMapping("ourindex", "ourtype", PutMappingDescriptorObj, parameters => parameters.AddQueryString("update_all_types", null));

我浏览了Nest 的2.0 分支,但没有找到对这些映射调用的 update_all_types 查询字符串参数的任何引用。

假设IndicesPutMapping()可以进行调用,这是我们目前唯一的选择吗?我开始怀疑我们是否应该只有条件地添加这些映射。

0 投票
1 回答
387 浏览

json - JsonReaderException 为 elasticsearch 创建批量索引

这是我第一次尝试使用 elasticsearch。我不确定如何解决下面的 JsonReaderException 错误。

导致异常错误

Newtonsoft.Json.dll 中出现“Newtonsoft.Json.JsonReaderException”类型的异常,但未在用户代码中处理

附加信息:读取字符串时出错。意外标记:StartObject。路径 'items[0].index.error',第 1 行,位置 108。

vw_MusicRules.cs

序列化的 sqlTracks

0 投票
1 回答
778 浏览

elasticsearch - 如何使用两个并行聚合进行弹性搜索嵌套

就像下面的http请求:基于TERM“service_project”aggr,还有2个SUM aggr“service_hour_price”和“servic_part_price”。我可以使用 Elasticsearch Nest 做同样的事情吗?

现在我只能使用基于 That Term Aggr 的一个 SUM Aggr,如下所示:

0 投票
1 回答
2127 浏览

c# - ElasticSearch(Nest,Elasticsearch.net)中的聚合、建议获取完整对象

我对弹性搜索很陌生,我正在使用 NEST 来查询弹性以下是我的代码片段。

我确实得到了文档列表(我指定的域对象的列表),但是在建议和聚合的情况下它不会返回域对象?

我提前道歉,我希望你能指出我正确的方向。

我正在寻找一种在 NEST 中实施的方法。

0 投票
0 回答
335 浏览

c# - ElasticSearch.Net - 在批量查询中删除索引

我正在实现一个重新索引操作,该操作从某个集合中获取所有元素并将它们添加到索引中,替换索引的旧内容(或创建的索引,如果它是空的)。为了实现这一点,我使用了 Elasticsearch 批量查询,我使用 Elasticsearch.net Bulk 函数调用它。

我已成功将元素添加到索引/使用所有元素创建新索引,但我似乎无法找出如何在批量查询中删除整个索引,以确保没有旧内容留在里面的物品。我可以通过另一个调用来做到这一点,但这意味着如果我删除索引然后重新创建它时失败,我将没有索引,而我猜,如果在批量查询中出现索引失败,那么索引将不会t 被删除。

这就是我现在的批量索引(并且有效):

我试过添加:

或者:

在foreach之前但无济于事。有没有办法在添加元素之前批量删除索引?

0 投票
0 回答
4061 浏览

elasticsearch - Elasticsearch.Net 和超时

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

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

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

在这一点上,我似乎无法弄清楚问题是.Net客户端还是服务器?一切都指向客户,但我不知道接下来要尝试什么。我认为我不能使用 BulkAPI,因为我基本上只是从 SQL 服务器复制更改,并且为了使它们保持同步,我在收到更改后立即执行更改。似乎当我插入新文档时,我的速度比更新时快得多。我已经阅读了更新文档,它几乎读起来像部分更新比完整更新更好,但是每次更新似乎都会发生整个 get-update-delete-reindex 事情。

根据 es 文档,我不应该调整线程池或性能设置。无论如何,我认为我没有达到任何这些限制。ES 错误日志也不表示任何问题。

有人对我可以做些什么来追踪连接错误有什么建议吗?

更新:这是实际错误:

错误:意外结果 (SaveToES)。Elasticsearch.Net.Exceptions.MaxRetryException: 嗅探集群中的已知节点导致自身的maxretry异常---> Elasticsearch.Net.Exceptions.SniffException: 嗅探集群中的已知节点导致自身的maxretry异常---> Elasticsearch.Net.Exceptions.MaxRetryException:重试 1 次后重试超时 00:00:05:'GET _nodes/_all/clear?timeout=3000'。InnerException:WebException,InnerMessage:操作已超时,InnerStackTrace:在 System.Net.HttpWebRequest.GetResponse() 在 Elasticsearch.Net.Connection.HttpConnection.DoSynchronousRequest(HttpWebRequest request, Byte[] data, IRequestConfiguration requestSpecificConfig) InnerException: WebException, InnerMessage:操作已超时,InnerStackTrace:在 System.Net。Elasticsearch.Net.Connection.HttpConnection.DoSynchronousRequest(HttpWebRequest request, Byte[] data, IRequestConfiguration requestSpecificConfig) 处的 HttpWebRequest.GetResponse() ---> System.AggregateException:发生了一个或多个错误。---> System.Net.WebException:操作已在 Elasticsearch.Net.Connection.HttpConnection.DoSynchronousRequest(HttpWebRequest request, Byte[] data, IRequestConfiguration requestSpecificConfig) 处的 System.Net.HttpWebRequest.GetResponse() 处超时 ---内部异常堆栈跟踪结束 --- 内部异常堆栈跟踪结束 --- 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandlerBase.ThrowMaxRetryExceptionWhenNeeded[T](TransportRequestState Byte[] data, IRequestConfiguration requestSpecificConfig) ---> System.AggregateException: 发生一个或多个错误。---> System.Net.WebException:操作已在 Elasticsearch.Net.Connection.HttpConnection.DoSynchronousRequest(HttpWebRequest request, Byte[] data, IRequestConfiguration requestSpecificConfig) 处的 System.Net.HttpWebRequest.GetResponse() 处超时 ---内部异常堆栈跟踪结束 --- 内部异常堆栈跟踪结束 --- 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandlerBase.ThrowMaxRetryExceptionWhenNeeded[T](TransportRequestState Byte[] data, IRequestConfiguration requestSpecificConfig) ---> System.AggregateException: 发生一个或多个错误。---> System.Net.WebException:操作已在 Elasticsearch.Net.Connection.HttpConnection.DoSynchronousRequest(HttpWebRequest request, Byte[] data, IRequestConfiguration requestSpecificConfig) 处的 System.Net.HttpWebRequest.GetResponse() 处超时 ---内部异常堆栈跟踪结束 --- 内部异常堆栈跟踪结束 --- 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandlerBase.ThrowMaxRetryExceptionWhenNeeded[T](TransportRequestState1 requestState, Int32 maxRetries) at Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.RetryRequest[T](TransportRequestState1 requestState) 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.DoRequest[T](TransportRequestState 1 requestState) at Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.RetryRequest[T](TransportRequestState1 requestState) 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.DoRequest[T](TransportRequestState1 requestState) at Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.Request[T](TransportRequestState1 requestState,对象数据)在 Elasticsearch.Net.Connection.Transport.Elasticsearch.Net.Connection.ITransportDelegator.Sniff(ITransportRequestState ownerState) --- 内部异常堆栈跟踪结束 --- --- 内部异常堆栈跟踪结束 - -- 在 Elasticsearch.Net.Connection.Transport.Elasticsearch.Net.Connection.ITransportDelegator.SniffClusterState(ITransportRequestState requestState) 在 Elasticsearch.Net 的 Elasticsearch.Net.Connection.Transport.Elasticsearch.Net.Connection.ITransportDelegator.Sniff(ITransportRequestState ownerState) .Connection.Transport.Elasticsearch.Net.Connection.ITransportDelegator.SniffOnConnectionFailure(ITransportRequestState requestState) 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.RetryRequest[T](TransportRequestState1 requestState) at Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.DoRequest[T](TransportRequestState1 requestState) 在 Elasticsearch.Net.Connection.RequestHandlers.RequestHandler.Request[T](TransportRequestState 1 requestState, Object data) at Elasticsearch.Net.Connection.Transport.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters) at Elasticsearch.Net.ElasticsearchClient.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters) at Elasticsearch.Net.ElasticsearchClient.IndicesCreatePost[T](String index, Object body, Func2 requestParameters) 在 Nest.RawDispatch.IndicesCreateDispatch[T](ElasticsearchPathInfo 1 pathInfo, Object body) at Nest.ElasticClient.<CreateIndex>b__281_0(ElasticsearchPathInfo1 p, ICreateIndexRequest d) 在 Nest.ElasticClient.Nest.IHighLevelToLowLevelDispatcher.Dispatch [D,Q,R](D 描述符, Func 3 dispatch) at Nest.ElasticClient.CreateIndex(Func2 createIndexSelector) 在 DCSCache.esvRepository.CreateIndex(String IndexName, String IndexVersion) 在 DCSCache.esvRepository.Save(esv ItemToSave, String IndexName, String IndexVersion)

0 投票
1 回答
45 浏览

elasticsearch - 如何在elasticsearch中的查询级别添加分析器?

我需要从弹性搜索中的查询中删除停用词。我可以在索引级别应用分析器,但让我知道如何在弹性搜索中的查询或搜索级别应用分析器。

0 投票
1 回答
2312 浏览

elasticsearch - NEST - How can i do multiple nested aggregation?

How can I do multiple nested aggregation?

I have tried something like this:

But it returns Facets2 as a child of Facets

Can anyone help?

0 投票
1 回答
698 浏览

c# - NEST 弹性搜索:如何返回某些字段以及聚合结果?

聚合后,我需要查询某些字段。

文件结构为:

我想按'hashValue'聚合,这样我就只能得到唯一的hashValues,并且返回结果也应该有类型。我需要有关 NEST 查询的帮助。

当前要聚合的查询是:

我如何将它的返回类型字段与 hashValue 一起扩展?

谢谢。