C#中,Elasticsearch.Net判断空字符串

news2024/11/25 13:54:53

之前有个业务需求,由于最开始存储到es里的,是默认空字符串,后面程序取数据时,发现需要取空字符串的数据时,不好取出来。

字符串的字段如图:

 

实际数据如图: 

用的是C#语言,使用的是Elasticsearch.Net和Nest两个类库,查找字符串为空的数据。

最开始找网上的资料,使用的判断条件是MustNot+Term:

Func<QueryContainerDescriptor<HotModelEsModel>, QueryContainer> query = 
    q => q.Bool(a => a.MustNot(m => m.Term(f => f.DataDate, "")));

对应的Request是:

竟然把我的条件去掉了!拿到的结果自然就是错的。

只能再继续找资料,使用新的判断条件是MustNot+Wildcard:

Func<QueryContainerDescriptor<HotModelEsModel>, QueryContainer> query = 
    q => q.Bool(a => a.MustNot(m => m.Wildcard(f => f.DataDate, "*")));

对应的Request是:拿到的结果却是空的。

 只能继续查找资料,使用Script方式:

Func<QueryContainerDescriptor<HotModelEsModel>, QueryContainer> query = 
    q => q.Script(c => c.Script(d => d.Source("doc['DataDate'].value==''").Lang(ScriptLang.Painless)));

  对应的Request是:

 终于完美拿到结果了!

 

但是Script相对来说效率会低一点点,不到万不得已不使用。

 因为之前问过大佬,大佬给了一个新的解决方案Terms+Verbatim:

Func<QueryContainerDescriptor<HotModelEsModel>, QueryContainer> query = 
    q => q.Terms(tf => tf.Verbatim().Field(t => t.DataDate).Terms(new string[] { "" }));

  对应的Request是:

 也成功了!

把大佬的方案再优化一下,使用Term+Verbatim:

Func<QueryContainerDescriptor<HotModelEsModel>, QueryContainer> query = 
    q => q.Term(c => c.Verbatim().Field(p => p.DataDate).Value(""));

  对应的Request是:

完美拿到想要的数据!

拿到数据之后,查了一下Verbatim,这个是用于不分词,完全按照搜索条件去搜索。

所以可以完整地匹配空字符串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法笔记】递归与回溯

递归与回溯 To Iterate is Human, to Recurse, Divine. —L. Peter Deutsch 人理解迭代&#xff0c;神理解递归。 —L. Peter Deutsch 1.什么是递归呢 递归形象描述&#xff1a; 你打开面前这扇门&#xff0c;看到屋里面还有一扇门。 你走过去&#xff0c;发现手中的钥匙还可以…

【Spark分布式内存计算框架——Spark Streaming】11. 应用案例:百度搜索风云榜(下)实时窗口统计

5.5 实时窗口统计 SparkStreaming中提供一些列窗口函数&#xff0c;方便对窗口数据进行分析&#xff0c;文档&#xff1a; http://spark.apache.org/docs/2.4.5/streaming-programming-guide.html#window-operations 在实际项目中&#xff0c;很多时候需求&#xff1a;每隔一…

数智未来,AI赋能——第四届OpenI/O 启智开发者大会昇腾人工智能应用专场圆满举行!

为提升启智社区与鹏城实验室在人工智能开源领域的影响力&#xff0c;促进社区成员与开源生态圈伙伴的合作。2月25日上午&#xff0c;第四届OpenI/O 启智开发者大会昇腾人工智能应用专场分论坛在深圳人才研修院举办&#xff0c;进一步促进与发挥企业间资源共通的优势&#xff0c…

【ROS2知识】关于colcon编译和ament指定

一、说明 这里说说编译和包生成的操作要点&#xff0c;以python包为例。对于初学者来说&#xff0c;colcon和ament需要概念上搞清楚&#xff0c;与此同时&#xff0c;工作空间、包、节点在一个工程中需要熟练掌握。本文以humble版的ROS2&#xff0c;进行python编程的实现。 二、…

【408之计算机组成原理】计算机系统概述

目录前言一、计算机的发展历程1. 计算机发展的四代变化2. 计算机元件的更新换代3. 计算机软件的发展二、计算机系统层次结构1. 计算机系统的组成2. 冯诺依曼体系结构3. 计算机的功能部件1. 输入设备2. 输出设备3. 存储器4. 运算器5. 控制器三、 分析计算机各个部件在执行代码中…

【算法】阿里面试题-编码实现20亿个整数,找出某个数X是否存在其中

1.海量数据去重-BitMap位图解决方案 需求&#xff08;面试题&#xff09; 一个32位4G内存的操作系统&#xff0c;在20亿个整数&#xff0c;找出某个数X是否存在其中 假如是java语言&#xff0c;int占4字节&#xff0c;1字节8位&#xff08;1 byte 8 bit&#xff09; 方式一&…

Mockito 入门

目录1.什么是 Mock 测试&#xff1f;2.Mockito简介3.在 SpringBoot 单元测试中使用 Mockito3.1 Maven依赖&#xff1a;3.2 UserService.java3.3 User.java3.4 thenReturn系列方法&#xff08;测试桩&#xff09;3.5 thenThrow系列方法3.6 verify 系列方法4.Spring中mock任何容器…

计算机组成原理-动态链接库-笔记

Linux 下的 ELF 文件格式 Windows 的可执行文件格式是一种叫作PE&#xff08;Portable Executable Format&#xff09;的文件格式 动态链接库 这些机器码必须是“地址无关”的。也就是说&#xff0c;我们编译出来的共享库文件的指令代码&#xff0c;是地址无关码&#xff08;…

10个可以实现高效工作与在线赚钱的 AI 工具网站

自 2020 年以来&#xff0c;内容开发领域已经感受到人工智能工具的存在。 目前&#xff0c;营销人员和内容创作者正在利用这些工具来加快他们的工作流程。 如果您拥有最流行的 AI 工具之一&#xff0c;例如 CopyAI、Jasper AI 或 Content at Scale&#xff0c;您可能正在考虑…

申论套卷 | 要点杂、乱、碎的材料如何快速分类整理?

试卷来源&#xff1a;2020年全国联考上半年材料1A省C市Y区文化馆&#xff08;非物质文化遗产保护中心&#xff09;作为政府设立的公益性公共文化事业单位&#xff0c;始终坚持公益文化发展方向&#xff0c;面向基层、贴近百姓、服务大众&#xff0c;积极组织各种大型活动&#…

Ubuntu中安装matelab2020a

Ubuntu中安装matelab2020a1 matelab下载2 安装步骤3 激活matelab4 创建快捷方式我的Ubuntu版本是20.041 matelab下载 matelab官网https://www.mathworks.com/ 点击右上角的get matelab&#xff0c;进入下载页面 没有账号的同学可以先去注册一个&#xff0c;推荐使用教育邮箱&…

错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案

近日&#xff0c;在使用CascadeRCNN完成目标检测任务时&#xff0c;我在使用这个模型训练自己的数据集时出现了如下错误&#xff1a; tensorflow.python.framework.errors_impl.OutOfRangeError: PaddingFIFOQueue _1_get_batch/batch/padding_fifo_queue is closed and has in…

前端JS内存管理

JS内存管理 内存原理&#xff1a; 任何变成语言在执行的时候都需要操作系统来分配内存&#xff0c;只是有些语言需要手动管理分配的内存有些语言有专门来管理内存的方式 如 JVM 了解以上的概念之后&#xff0c;我们再来了解一下大致的内存周期 分配需要的内存使用内存在不使用…

Linux- 系统随你玩之--好用到炸裂的系统级监控、诊断工具

文章目录1、前言2、lsof介绍2.1、问题来了&#xff1a; 所有用户都可以采用该命令吗&#xff1f;3、 服务器安装lsof3.1、安装3.2、检查安装是否正常。4、lsof 命令4.1、常用功能选项4.2、输出内容4.2.1 、FD和 TYPE列5、 lsof 命令实操常见用法6 、常用组合命令7、 结语1、前言…

OpenHarmony 3.2 Beta Audio——音频渲染

一、简介Audio是多媒体子系统中的一个重要模块&#xff0c;其涉及的内容比较多&#xff0c;有音频的渲染、音频的采集、音频的策略管理等。本文主要针对音频渲染功能进行详细地分析&#xff0c;并通过源码中提供的例子&#xff0c;对音频渲染进行流程的梳理。二、目录foundatio…

无线WiFi安全渗透与攻防(一)之无线安全环境搭建

无线安全环境搭建 1.802.11标准 &#xff08;1&#xff09;.概念 802.11标准是1997年IEEE最初制定的一个WLAN标准&#xff0c;工作在2.4GHz开放频段&#xff0c;支持1Mbit/s和2Mbit/s的数据传输速率&#xff0c;定义了物理层和MAC层规范&#xff0c;允许无线局域网及无线设备…

Crack:LightningChart .NE​​T 10.4.1中的新功能

数据游标 Lightningchart .NET UWP 展示应用 在以前的版本中&#xff0c;LightningChart .NET 提供了不同的工具来实现数据跟踪功能&#xff0c;但都需要额外的用户编码。 现在可以使用 DataCursor 浏览 ViewXY 系列。系列数据值由这个新类/对象显示在鼠标位置或鼠标位置附近。…

【matplotlib】可视化解决方案——如何解决matplotlib中文乱码问题

问题概述 Matplotlib 默认不支持中文字体&#xff0c;这是因为 matplotlib 只支持 ASCII 字符&#xff0c;但是国人使用 matplotlib 肯定需要中文标注。如下图所示&#xff0c;当不对 Matplotlib 进行设置&#xff0c;而直接使用中文时&#xff0c;绘制的图像会出现中文乱码。…

为什么我选择收费的AdsPower指纹浏览器?

在决定开始用指纹浏览器之前&#xff0c;东哥我们团队找了市面上很多产品去测试。最后&#xff0c;还是决定用AdsPower。每个人的使用感受都不一样&#xff0c;我就说几个东哥和我们团队用得顺手的点&#xff0c;大家在选择指纹浏览器的时候也可以做一个参考。 一、指纹环境强大…

3月5日,加入线上对话,点燃科技行业女性影响力!

对话升级&#xff0c;点燃科技行业女性影响力&#xff01; &#x1f44b; 2022 年&#xff0c;Jina AI 联合 14 家合作伙伴&#xff0c;首次举办了「Impact Tech, She Can」线上对话&#xff0c;11 位嘉宾与 200 多位参会者分享了如何在科技行业内打造自身影响力。 &#x1f38…