ElasticSearch NEST:通过ElasticClient通过指定json创建索引

2024-02-22

我们允许客户在创建索引时定义自定义分析器。我们更愿意在 json 中指定这一点,以便通过底层 ElasticSearch 文档提供最大的灵活性和可理解性。

我想使用 json 字符串中定义的分析器、映射器等的任意描述来创建索引。使用感觉,我的命令是

PUT /my_index
{
    "settings": 
    {
        "analysis": 
        {
            "char_filter" : 
            {
                "my_mapping" : 
                {
                    "type" : "mapping",
                    "mappings" : [".=>,", "'=>,"]
                }
            },
            "analyzer": 
            {
                "my_analyzer": 
                {
                    "type":         "custom",
                    "tokenizer":    "standard",
                    "filter":       ["lowercase" ],
                    "char_filter" : ["my_mapping"]
                }
            }
         }
      }
   }
}

理想情况下,我的代码看起来像

string json = RetrieveJson();
ElasticSearchClient client = InitializeClient();
client.CreateIndexUsingJson( json ); // this is the syntax I can't figure out

帖子here https://stackoverflow.com/questions/23220874/creating-an-index-nest尝试通过实例化 IndexSettings 然后调用 Add( "analysis", json ) 来实现此目的,但 Add 不是我正在使用的 ElasticSearch 库版本上的函数。

我可以想象的选项包括:

  1. 以某种方式使用 ElasticClient.Raw.IndicesCreatePost 或类似的东西
  2. 通过 IndexSettingsConverter.ReadJson() 将 json 字符串反序列化为 IndexSettings 对象,然后通过 ElasticClient.CreateIndex(ICreateIndexRequest) 应用该对象

这两种机制的文档都非常少。

我绝对试图避免 CreateIndex 的 lambda 函数版本,因为将用户的 json 转换为 lamdba 表达式,然后立即将它们转换回 NEST 深处的 json 会很痛苦。

非常感谢上面#1 或#2 的其他选项或具体示例,这也是解决此问题的推荐方法。


最简单的解决方案是实施原始问题中的选项#1。

public void CreateIndex(string indexName, string json)
{
    ElasticClient client = GetClient();
    var response = _client.Raw.IndicesCreatePost(indexName, json);
    if (!response.Success || response.HttpStatusCode != 200)
    {
        throw new ElasticsearchServerException(response.ServerError);
    }
}

在对转换器、JsonReaders 和 JsonSerializers 进行修改之后,我发现 IndexSettingsConverter 似乎无法正确地将任意设置 json 反序列化为有效的 IndexSettings 对象。感觉到了一个兔子洞,我接受了 Manolis 的建议,并弄清楚如何直接对 ElasticClient.IElasticsearchClient 应用任意 json,以避免对安全性和连接细节进行逆向工程。

要得出这个结论是经过痛苦的努力的,如果不研究大量未记录的 NEST 代码,这是完全不可能的。

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

ElasticSearch NEST:通过ElasticClient通过指定json创建索引 的相关文章

  • 内联函数/方法

    声明 内联函数必须在调用之前定义 这个说法正确吗 EDIT 该问题最初是德语 内联功能穆森 弗 伊赫雷姆 奥夫鲁夫定义 sein 也许它对任何人都有帮助 是的 它是正确的 但只是部分正确 它可能正确地重新构建如下 内联函数必须在每个翻译单位
  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • 在 C# 中生成 HMAC-SHA1

    我正在尝试使用 C 来使用 REST API API 创建者提供了以下用于 hmac 创建的伪代码 var key1 sha1 body var key2 key1 SECRET KEY var key3 sha1 key2 var sig
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • CultureInfo 的实例(来自相同的文化)根据操作系统而变化

    我有一个网站 上面写着这样的日期 CultureInfo cultureInfo CultureInfo GetCultures CultureTypes AllCultures FirstOrDefault c gt string Equ
  • Elasticsearch:根据类型对不同字段进行排序

    我的索引中有两种类型 Event and City 我正在尝试按日期将它们全部排序 但是 每种类型的日期字段名称都不同 为了Event该值是在updated at领域和City日期是在update at其嵌套对象之一中的字段city eve
  • 在 C# Winforms 应用程序中嵌入 Windows XP 主题

    我有一个旧版 C Windows 窗体应用程序 其布局是根据 Windows XP 默认主题设计的 由于需要将其作为 Citrix 应用程序进行分发 该应用程序现在看起来像经典主题应用程序 因为 Citrix 不鼓励使用主题系统服务 所以
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 对 boost 库的依赖项没有完整路径

    我已经成功构建了动态库 依赖于使用自定义前缀构建和安装的 boost 库 b2 install prefix PREFIX 然而 当我跑步时otool L在我的库中 我得到如下输出 libboost regex dylib compatib
  • 两种类型的回发事件

    1 我发现了两篇文章 每篇文章对两种类型的回发事件的分类都略有不同 一位资源说两种类型的回发事件是Changed事件 其中控件实现 IPostbackDataHandler 当数据在回发之间更改时触发 然后Raised事件 其中控件实现 I
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • Visual Studio 2017 完全支持 C99 吗?

    Visual Studio 的最新版本改进了对 C99 的支持 最新版本VS2017现在支持所有C99吗 如果没有 C99 还缺少哪些功能 No https learn microsoft com en us cpp visual cpp
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne

随机推荐

  • 自动接受用户输入 Windows Batch

    I have a batch file that loads on startup that presents the user with a menu of applications they can choose to load by
  • 如何制作动态 Angular2 管道

    我有以下 UI 按钮 显示全部 类别 1 类别 2 我想用filterBy from ngx pipes https github com danrevah ngx pipes https github com danrevah ngx p
  • 如何从剪贴板粘贴?

    Google Cloud shell 不允许我 粘贴 剪贴板中的内容 我尝试过使用 发送命令 ctrl v 选项 并尝试使用root 我发现它可以与 IE 一起使用 给出一条消息以允许剪贴板访问该页面 但只是一次性的事情 我缺少什么 原来这
  • 记录 Kubernetes 中使用部署部署的 Pod

    我将在下面尝试解释我的问题 使用部署创建一个 Pod 然后使用以下命令对其应用另一个更新kubectl apply f sampledep yaml 如果我们这样做 Pod 名称就会改变kubectl get pods 因此 我们之前的 P
  • Jenkins 在构建和构建后之间挂起

    将 Jenkins 更新到版本 2 156 从版本 1 6 后 我们的一些构建作业在完成后和进行构建后操作之前会陷入困境 作业本身会在 5 分钟内完成 与之前相同 然后挂起 5 10 分钟 然后再继续 我设法将其范围缩小到 Executor
  • 如何在通过Wine运行的Linux程序和Windows程序(同一台计算机)之间共享内存?

    有没有办法 以及如何 在通过 wine 运行的 linux 程序和 windows 程序之间共享内存 由于可能很难理解为什么要做这样的事情 我给你我的情况 我有一个仅为 Windows 编译的专有程序 但该程序有一个开放的 C 插件 API
  • css3 关键帧动画的 SASS(不是 SCSS)语法

    有没有办法在SASS中写入关键帧 我发现的每个例子实际上都是 SCSS 即使它说它是 SASS 需要明确的是 我的意思是没有大括号的 以下是如何在 Sass 语法中实现 css 关键帧 keyframes name of animation
  • Java 9 takeWhile 和 dropWhile 读取并跳过某些行

    我有一个文本文件 其中包含多个报告 每个报告都以文字 REPORT ID 开头 并具有特定值 即 ABCD 对于简单的情况 我只想提取那些具有值 ABCD 的报告的数据 考虑到复杂性 我只想提取 TAG1 值 第二行 为 100037535
  • 如何让 Python 自动创建字典中缺失的键/值对? [复制]

    这个问题在这里已经有答案了 我正在创建一个多层深度的字典结构 我正在尝试做类似以下的事情 dict dict a b True 目前 上述操作失败 因为键 a 不存在 目前我必须检查每个嵌套级别并手动插入一个空字典 是否有某种类型的语法糖能
  • 启动第一个 Django 项目错误

    我的计算机运行 Ubuntu 12 04 我按照本教程开始使用 Django http blog stannard net au 2010 12 11 installing django with apache and mod wsgi o
  • Ffmpeg 在 Electron 沙盒应用程序中中止

    我有一个 Electron 应用程序 发布在 Mac AppStore 上 并且是沙盒的 我正在尝试添加一个新功能 可以动态编码 解码视频 这样我就可以在 Electron 上下文中流式传输更多视频格式 我在用着流利的 ffmpeg htt
  • 哪些标准 C++ 功能可用于查询机器/操作系统架构?

    用于查询运行程序的硬件或操作系统功能的属性的标准 C 功能和实用程序是什么 例如 std thread hardware concurrency 给出机器支持的线程数 但是 如何检测计算机有多少 RAM 或者进程正在使用多少 RAM 或者某
  • 如何从 n 个元素中找到 k 排列的索引?

    我知道 对于一个k 排列p大小的k 从构建n元素 有 P n k n n k 可能的k 排列 例如 k 2 n 4 l 1 2 3 4 P n k 4 4 2 12 1 2 2 1 3 1 4 1 1 3 2 3 3 2 4 2 1 4 2
  • .BOT 文件未部署到 Azure Bot Service v4

    将 Azure Bot 服务与 C Bot Builder SDK v4 v4 0 7 2018 年 9 月发布的 GA 版本 结合使用 我正在使用BOT file https github com Microsoft botbuilder
  • Keras:无法导入名称 np_utils [重复]

    这个问题在这里已经有答案了 我正在使用 Python 2 7 和 Jupyter Notebook 进行一些基本的机器学习 我正在按照本教程进行操作 http machinelearningmastery com regression tu
  • 在 laravel 中找不到用于 sqlite 的 pdo 异常驱动程序

    当我跑步时php artisan migrate我得到的命令 PDOException 找不到驱动程序 我将默认数据库设置为 sqlite 并检查是否有用于 sqlite 的 pdo 驱动程序php i命令 我无法理解我的问题 你的系统缺失
  • 猫鼬枚举数

    我需要获取模式中字段的枚举值 我有架构 let adminSchema new Schema login type String unique true required true minlength 5 maxlength 300 has
  • 使用套接字 fd 在手机之间传输实时视频

    我是android编程的新手 发现自己陷入了困境 我一直在研究各种从手机到手机流式传输实时视频的方法 似乎它大部分功能都可用 当然除了最重要的部分 播放流 它似乎是从一部手机发送流 但第二部手机无法播放流 这是游戏方的代码 public c
  • 为什么选择排序不稳定?

    这可能是微不足道的 但我不明白为什么默认实现选择排序 http en wikipedia org wiki Selection sort不稳定 在每次迭代中 您都会找到剩余数组中的最小元素 当找到这个最小值时 您可以选择找到的第一个最小值
  • ElasticSearch NEST:通过ElasticClient通过指定json创建索引

    我们允许客户在创建索引时定义自定义分析器 我们更愿意在 json 中指定这一点 以便通过底层 ElasticSearch 文档提供最大的灵活性和可理解性 我想使用 json 字符串中定义的分析器 映射器等的任意描述来创建索引 使用感觉 我的