如何使用 NEST 客户端将 Elasticsearch 配置为使用 AutoMap 类型作为动态映射对象的默认模板?

2024-01-07

我动态地将对象添加到索引中,因此它们都使用 _default_ 映射进行索引。这是有问题的,因为它会导致诸如Guid被映射为text字段而不是作为keyword. The AutoMap https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/auto-map.htmlNEST 客户端提供的函数可以从任何给定的数据类型“自动推断出正确的”字段,但只有在显式调用时才会这样做。有没有办法强制 _default_ 映射使用与 AutoMap 函数相同的模板?或者我是否需要添加一些额外的代码来循环遍历所有可能的对象类型并创建一个IndexDescriptor为每一个先发制人?


你可以定义一个索引模板 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html将映射应用到新创建的模板

var putIndexTemplateResponse = client.PutIndexTemplate("default", t => t
    .Template("*")
    .Mappings(m => m
        .Map("_default_", tm => tm
            .Properties(p => p
                .Keyword(k => k
                    .Name("id")
                )
            )
        )
    )
);

这将映射id任何新创建的索引中任何类型的属性作为关键字字段。

如果您需要更多基于约定的东西,您可以使用动态模板 https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html使用规则来确定应如何映射动态添加的字段

var createIndexResponse = client.CreateIndex("index-name", t => t
    .Mappings(m => m
        .Map("_default_", tm => tm
            .DynamicTemplates(d => d
                .DynamicTemplate("default", dt => dt
                    .Match("id")
                    .MatchMappingType("string")
                    .Mapping(mm => mm
                        .Keyword(k => k)
                    )
                )
            )
        )
    )
);

两种方法都在 Elasticsearch 中设置映射约定。如果您打算确定自己的代码中的任何约定,例如使用访问者模式 https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/visitor-pattern-mapping.html,您需要明确告知 Elasticsearch 结果映射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 NEST 客户端将 Elasticsearch 配置为使用 AutoMap 类型作为动态映射对象的默认模板? 的相关文章

  • 无法从程序集“mscorlib”加载类型“System.Runtime.CompilerServices.ExtensionAttribute”

    第一次启动我的网站时 我收到此错误 Could not load type System Runtime CompilerServices ExtensionAttribute from assembly mscorlib Version
  • 如何使用反应式扩展同时读取交错文件

    我是反应式扩展的新手 我想使用它 在 c 中 来读取包含多个交错流的文件 基本上文件的格式是ABCDABCDABCD 我更喜欢按顺序读取文件并分离流 即AAA BBB 等 并并行处理每个流 为每个流使用单独的线程 必须有某种形式的缓冲来确保
  • NEST 搜索整个文档 C# Elasticsearch

    我想使用 Nest 在 Elasticsearch 中查询超过一百万个文档 我的代码 var response client Search
  • MVVM ViewModel 很多属性

    我是 MVVM 新手 正在开发一个应用程序 我有一个包含很多属性的表单视图 大约 50 个 我不能将它们分离到用户控件中 因为这会破坏 mvvm 原则 我无法将它们分成模型 因为它们包含逻辑 属性更改 错误更改这些都不是 poco 类 并且
  • 从 SortedList 或 SortedDictionary 获取第 i 个值

    我有一个排序的对象集合 它可以是 SortedList 或 SortedDictionary 我将主要使用它来阅读 因此增加性能并不那么重要 我怎样才能得到第i个值 所以例如当我的集合中有数字 1 2 3 4 5 并且我想要中位数 本例中为
  • 如何在应用程序目录层次结构中构建接口?

    将它们全部放在一个单独的文件夹结构中还是与实现它们的类一起放置 切勿将接口与实现它们的类放在一起 除非这些类满足以下要求 这样做将引入一个紧耦合在接口和实现者之间 如果不同时引用实现者 您将无法创建该接口的其他实现 你基本上有两个选择 将接
  • 我如何知道文件已打开或正在使用? [复制]

    这个问题在这里已经有答案了 可能的重复 有没有办法检查文件是否正在使用 https stackoverflow com questions 876473 is there a way to check if a file is in use
  • 将浮点型转换为双精度型

    我正在尝试转换Single to Double同时保持原来的价值 我找到了以下方法 Single f 5 2F Double d1 f 5 19999980926514 Double d2 Double Parse f ToString 5
  • .net core 1.1 中嵌入的 power bi

    目前 我正在尝试在 Visual Studio 2017 中为我的 net core 1 1 项目导入 powerbi 包 但是 我收到以下错误 Install Package Package Microsoft PowerBI Core
  • 使用 Serilog 时如何在输出消息中获取丰富的属性

    我正在尝试使用 Serilog 将丰富的属性输出到渲染的消息中 private static Tester GetTester return new Tester Count 7 Name Redmond Log Logger new Lo
  • 如何解决文件被另一个进程使用的问题?

    我一直在 VS NET 2010 中调试 没有任何问题 但现在无法建造 我收到错误 Unable to copy file filename to bin Debug filename The process cannot access t
  • 检测笔记本电脑盖子的关闭和打开

    是否可以检测笔记本电脑的盖子何时打开或关闭 从我读到的内容来看 这是不可能的 但 SO 之前已经帮助我完成了不可能的任务 我发现唯一可能朝着正确方向的事情是关于报告电源按钮所需的 IOCTL 的 MSDN 博客文章 https learn
  • 如何使用 Linq 将实体表与交叉引用表连接起来

    首先我要说的是 我对 Linq 比较陌生 但我似乎很快就掌握了其中的大部分内容 但这个问题却难倒了我 我找了又找都没有结果 我使用代码优先并创建了 2 个模型 项目 和 关键字 他们之间存在多对多的关系 我的实体模型如下所示 public
  • 如何在 C# 中从这个分层父子结构中查找任何项目

    如何从列表中查找任何项目 因为它是动态的 它可能位于列表的任何位置的父项或子项中 并且当子项计数为0时需要停止查找 下面是列表的模型和分层父子结构示例 例子 父级 gt 子级 gt 子级 gt 子级或父级 gt 子级 gt 子级 gt 子级
  • 如何使用 .net 2.0 中的 WebBrowser 控件检查 ajax 更新?

    我有一个网页正在使用 WebBrowser 控件在 winform 应用程序中显示 我需要在网页中的 HTML 发生变化时执行一个事件 但是 我找不到通过 Ajax 更新页面时触发的事件 DocumentComplete FileDownl
  • 在elasticsearch中存储聊天消息的最佳方式

    我们目前正在实施一项即时通讯系统在我们的平台上 我们需要为我们的用户提供聊天记录并能够显示用户最近进行的 5 次对话 像 Facebook 上的预览一样 事实上 我们必须考虑如何才能存储所有这些数据 我们正在使用弹性搜索我们认为这可能是存储
  • Task.Run 作为反模式?

    我正在将 SQLite NET PCL 库用于我的 WinRT 项目SQliteAsyncConnection类 它提供经典的异步版本SQLiteConnection方法 然而 就该项目而言Github页面 https github com
  • 为什么 0.5 mod 0.1 在不同的编程语言中结果不同?

    我有一个关于模数的问题 模运算求一个数除以另一个数的余数 我原本期望 0 5 0 1 0 的结果 但是当我在 PHP 或 net 中运行它时 我得到 0 1 我运行的 php 代码是 var dump fmod 0 5 0 1 在 net中
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • Visual Studio '17 未在参考管理器中显示程序集

    我遇到的问题是 我似乎无法弄清楚如何添加对某些解决方案的引用 在我从 Visual Studio 17 开始的大多数解决方案中 我在解决方案资源管理器中看到 引用 但例如对于 asp net core web api 我得到 依赖项 每当解

随机推荐