问题标签 [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.
c# - Json.Net 中的“当前错误上下文错误与请求的错误不同”异常
语境
我用 C# 编写了一个并行作业框架,用于从 ElasticSearch 集群导入/导出大量数据。为此,我将单个项目的每次导入或导出建模为在某个时间由框架执行的对象。为了与 ElasticSearch 交互,我使用 NEST(官方 .NET ElasticSearch 客户端库)v1.7.1 和 JSON.Net 7.0.1。
每个导入/导出任务对象都使用 NEST 与 ElasticSearch 交互。出于性能原因,我编写了一个代理类,它将任务对象生成的搜索请求分组为固定大小的批次,以与 NEST 的 _msearch API 一起使用。这个类的调用者被延迟到它的批处理返回。该课程可在此处获得。
我的框架将每个导入/导出任务的结果模型包装为“布尔”或“异常”。即使遇到个别项目的错误,整个过程也能够继续。
问题
在几个小时的任务完成且没有错误后,我看到以下异常引发了数千次:
这是引发异常的代码(来自上面链接的批量搜索器类):
哪里Client
是IElasticClient
。
谷歌搜索异常消息将我带到JSON.Net 的 JsonSerializerInternalBase 类中的这个方法,它似乎在每次反序列化后执行:
鉴于单个 NEST 对象被跨多个线程的每个操作重用 - 我认为 NEST 只使用一个 JsonSerializer 实例 - 这让我认为 JSON.Net 的这一部分不是线程安全的。虽然奇怪的是直到运行几个小时后错误才开始发生。
我该如何进一步调试呢?
elasticsearch - ElasticSearch 映射:是否可以自动截断日期以适应其格式?
在我们的项目中,我们使用 NEST 将数据插入 ElasticSearch (1.7)。我们希望能够强制 ES 将所有日期截断为映射格式。
映射示例:
数据示例:
插入此数据会引发 IllegalArgumentException:
无效格式:“2015-12-21T15:55:00.000Z”在“:00.000Z”处格式不正确
显然我们不需要日期的最后一部分。我们不能将 ES 配置为只截断它而不是出错吗?
请记住,我们现在使用的是 1.7,因为日期格式似乎在最近的版本中发生了变化......
elasticsearch - Elasticsearch NEST - 短语搜索
我应该使用什么方法来让我的查询从输入短语的文本中返回至少包含 2 个关键字的命中。
例如,如果输入“你好朋友”,我希望返回结果包含文本中某处“你好”和“朋友”的文档。如果输入“你好,好朋友”,我想要文本中 3 个关键字中的 2 个的结果。或者至少具有最佳组合的结果排在首位。如果我使用下面这样的代码,我会得到“你好”或“朋友”但不是两者都有的结果。
我可以通过像这样的代码得到我想要的结果,但它不灵活,因为短语可以包含任意数量的单词。
我想我错过了一些东西。请帮忙。
提前致谢。
c# - 如何使用 ElasticSearch 仅返回属性子集
假设我启动并运行了一个 ElasticSearch 和 Blog 对象。
现在我只想将属性的一个子集返回到一个新类中
通常我使用实体框架,我会在 BlogListItem 类中编写一个 Selector,但我发现很难找到任何关于在 ElasticSearch 中使用 NEST 执行此操作的信息
这将返回正确数量的命中,但源为空,我无法弄清楚在哪里可以找到返回的属性。
解决方案 1 我找到了一个替代解决方案,但如果这是一个好的解决方案,我想输入。
这给了我返回的正确对象,但我对映射没有任何控制权,我不确定它是否返回所有属性然后进行映射。
解决方案 2.5 在这个解决方案中,我使用新的选择器更新了我的 BlogListItem。
然后是我的 elasticSearch 代码
现在这限制了返回的属性,所以我只得到 Title 并且 PublishedDate 为空,我知道可以控制映射,这要归功于
[ElasticProperty(Name = "title")]
仍然需要验证这是否是使用 ElasticSearch 的正确方法。
这将产生以下 Json
elasticsearch - ElasticSearch 批量索引
我正在使用带有 Nest C# 客户端的 2.1 版和 2.0 (alpha) 客户端...我正在尝试批量插入一些记录,但是,服务器返回错误。我正在使用与 Linux 服务器通信的 Windows 客户端上的客户端(但我认为这无关紧要)。
更新 - 错误信息
我得到的错误是在 Bulk() 方法返回的响应中......返回的 BulkResponse 的两个属性是:
OriginalException:“远程服务器返回错误:(400)错误请求”
ServerError.Error:“验证失败:1:未添加请求”
elasticsearch - 弹性搜索 - 嵌套布尔字段映射
当我使用 NEST 和我的类型创建模式映射时,我从 ElasticSearch 收到以下异常。
当我使用上述请求创建映射时,出现异常。Bool 字段未标记化。请帮我解决这个问题?
elasticsearch - 数组项上的 Elasticsearch 聚合
下面给出的是我想要在其上触发聚合查询的 Elasticsearch 文档。
结果必须如下。
有没有办法在 Elasticsearch 中实现这一点?
nest - 使用 NEST 从 ElasticSearch 中的插件设置分析器
我的第一个 SO 帖子!我正在尝试为字符串字段设置 Stempel Analyzer(波兰语的 ES 分析器)。我可以通过 PUT 请求来做到这一点:
它工作正常。试图通过 NEST 做同样的事情。
不工作也不行:
当我使用
它工作正常,因此 .NET 正在检测此分析器。我正在使用 ES 2.1.1。& 巢 1.7.1
编辑:从我的检查来看,NEST 似乎没有对在.NET 中创建的附件类的属性进行映射。它确实映射文档类的属性
但不是附件类:
elasticsearch - 带查询的 ElasticSearch.NET 和 F# 问题
我正在尝试将 C# 代码库转换为使用 ElasticSearch.NET 客户端的 F#。F# 似乎无法正确推断出正确的类型。
这是有效的 C# 代码:
等效或匹配的 F# 代码如下,但无法编译:
此代码使用 F# 可以正常工作,但是,这不是我需要的:
未编译的 F# 显示以下错误:
根据该程序之前的信息查找不确定类型的对象。在这个程序点之前可能需要一个类型注释来约束对象的类型。这可以允许解析查找。
Question 的 F# 类型签名如下:
nest - 使用弹性搜索客户端发布原始 json
我已升级到 ElasticSearch.Net /Nest 2.0.2,我无法再使用低级客户端方法 (connector.GetClient().Raw.Bulk())。我查看了文档,但似乎找不到任何显示如何使用新版本发布原始 json 来索引新文档的内容。