C#中,Elasticsearch.Net判断空字符串
之前有个业务需求,由于最开始存储到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,这个是用于不分词,完全按照搜索条件去搜索。
所以可以完整地匹配空字符串。
具体官方解释资料,可以看这个:
Verbatim and Strict Query Usage | Elasticsearch .NET Clients [7.17] | Elastic
https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.17/verbatim-and-strict-query-usage.html
相关文章:
C#中,Elasticsearch.Net判断空字符串
之前有个业务需求,由于最开始存储到es里的,是默认空字符串。 后面程序取数据时,发现需要取空字符串的数据时,不好取出来。 字符串的字段如图: 实际数据如图: 我用的是C#语言,使用的是Elastic…...
23种设计模式-适配器模式
适配器模式(Adapter Pattern)是一种常用的设计模式,它可以将不兼容的接口转换成可兼容的接口,使得原本不能一起工作的类可以协同工作。 在Java中,适配器模式一般有两种实现方式,即类适配器模式和对象适配器…...
深入理解this指向问题
this指向 在运行时绑定,所以this和函数的调用方式和调用的位置有关,和定义的位置没关系 绑定规则 默认绑定(非严格模式下this指向全局变量,在严格模式下函数内的this指向undefined) 独立函数调用,没有主题 …...
事业单位联考(综合应用A类)典型例题教案
【联考A类】根据材料2,请你概括C市B县旅游质监所投诉处理科小王在接待投诉时存在的主要问题,并指出问题的具体表现。(35分)要求:准确、全面、分条作答。字数在300字以内。材料2:某日,几位游客家…...
frp内网穿透实验
Frp (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站, 帮你实现 公网 ←→ FRP(服务器) ←→ 内网…...
认识JavaScript中的防抖函数
👨 作者简介:大家好,我是Taro,前端领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录前言一、防抖是什么?1. deounce-v1的基本…...
macOS 13.3 Beta 2 (22E5230e)With OpenCore 0.8.9正式版 and winPE双引导分区原版镜像
原文地址:http://www.imacosx.cn/112340.html,转载需注明出处镜像特点完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要…...
JetPack—DataStore核心原理与使用
简介 首先,DataStore是Jetpack一部分,是一种数据存储解决方案。其次,DataStore使用协程及flow以异步、一致的方式实现数据的存储。最后是DataStore的实现,分为Preferences DataStore和Proto DataStore:Preferences Da…...
热烈祝贺|酒事有鲤盛装亮相2023中国(山东)精酿啤酒产业发展创新论坛暨展览会
酒事有鲤(济南)品牌管理有限公司是一家致力于将世界顶级精酿啤酒技术和理念与“ 在地”文化有机融合,做世界认 可的多元化好啤酒,通过精致 舒适的家门口酒馆,让啤酒的 世界观更为完整。 中国生物发酵产业协会联合齐鲁…...
深度强化学习DLR
1 强化学习基础知识 强化学习过程:⾸先环境(Env)会给智能体(Agent)⼀个状态(State),智能体接收到环境给的观测值之后会做出⼀个动作(Action),环境接收到智能体给的动作之后会做出⼀系列的反应,例如对这个动作给予⼀个奖励(Reward…...
Android Handler机制(四) Message源码分析
一. 简介 接上一篇文章:Android Handler机制(三) Looper源码分析 ,我们来继续分析一下Message源码 这一系列文章都是为了深入理解Handler机制. Message 作为消息传递的载体,源码主要分为以下 几个部分: 1. 操作数据相关,类似 getter()和 setter()这种…...
【Git】git命令(全)
Git1、本地操作2、版本管理3、远端仓库4、分支管理5、缓存stash6、遗留rebase7、标签管理8、解决冲突9、参考教程10、示例代码1、本地操作 Linux安装git:yum install git查看git版本 git version查看git设置 git config --list设置git属性 git config --global初始…...
软考论文-成本管理(1)
成本管理 1.成本管理的主要内容? 规划成本:制定一个成本管理的计划。估算成本:根据项目范围说明书,项目管理计划和wbs等文档,采用xxx方法进行估算成本成本预算:可以算工作包的费用,制定预算和…...
Java 多线程 --- 锁的概念和类型划分
Java 多线程 --- 锁的概念和类型划分锁的概念乐观锁与悲观锁公平锁与非公平锁什么是可重入锁独占锁与共享锁轻量级锁和重量级锁自旋锁 (Spinlock)锁的概念 锁可以将多个线程对共享数据的并发访问转换为串行访问, 这样一个共享数据一次只能被一个线程访问, 该线程访问结束后其他…...
python程序员狂飙上头——京海市大嫂单推人做个日历不过分吧?
嗨害大家好鸭!我是小熊猫~ 这个反黑剧其实火了很久了, 但是我现在才有空开始看 该说不说,真的很上头!!! 大嫂简直就像是干枯沙漠里的玫瑰 让人眼前一亮哇~~ 我小熊猫此时此刻就成为大嫂的单推人&…...
浅谈子网掩码、IP地址、网络地址之间关系
文章目录一、什么是子网掩码二、给定IP地址,如何求网络地址网络标识(net-id)和主机标识(host-id)计算步骤三、CIDR地址表示方法(Classless Inter Domain Routing)四、IP地址与MAC地址一、什么是子网掩码 在TCP/IP协议…...
前端优化的解决方案
能缓存的,尽量强缓存。减少HTTP请求数 使用外部引入的css和js文件,并且引入的css和js越少越好使用雪碧图(精灵图)img计算缩放也需要时间,使用base64编码将较小图片嵌入到样式表中,减少请求数因为iframe会阻…...
PYthon组合数据类型的简单使用
Python的数据类型有两种,基本数据类型和组合数据类型,组合数据类型在Python的使用中特别重要。 1.组合数据类型的分类: 2.序列类型 序列类型中元素存在顺序关系,可以存在数值相同但位置不同的元素。序列类型支持成员关系操作符&…...
【Java】P2 基础语法与运算符
Java 基础语法 运算符Java注释方法基本数据类型驼峰命名法Scanner类基本运算除法隐式转换逻辑运算符 以及 短路逻辑运算符三元运算符前言 上一节内容涵盖Java的基础知识,包含安装下载,JDK与JRE等。 链接:https://blog.csdn.net/weixin_43098…...
【并发基础】Java中线程的创建和运行以及相关源码分析
目录 一、线程的创建和运行 1.1 创建和运行线程的三种方法 1.2 三者之间的继承关系 二、Thread类和Runnable接口的区别 2.1 Runnable接口可以实现线程之间资源共享,而Thread类不能 2.2 实现Runnable接口相对于继承Thread类的优点 三、实现 Runnable 接口和实现 Call…...
GLM-OCR开发者实操手册:Gradio client调用+批量图片识别脚本示例
GLM-OCR开发者实操手册:Gradio client调用批量图片识别脚本示例 你是不是也遇到过这样的场景:手头有一堆发票、合同或者产品说明书图片,需要把里面的文字、表格甚至公式都提取出来?一张张手动录入或者用传统OCR工具,不…...
2026年鱼生专用花生油:哪些品牌值得选?
大家好,今天咱们聊聊一个很有趣的话题——鱼生专用花生油。说到鱼生,大家可能会想到广东、广西地区的美食,尤其是那一道道色香味俱全的鱼生,简直让人垂涎欲滴。但是,鱼生的美味离不开优质的食用油,尤其是花…...
如何守护.NET应用源代码安全?Obfuscar开源混淆方案深度解析
如何守护.NET应用源代码安全?Obfuscar开源混淆方案深度解析 【免费下载链接】obfuscar Open source obfuscation tool for .NET assemblies 项目地址: https://gitcode.com/gh_mirrors/ob/obfuscar 在数字化时代,.NET应用程序面临着严峻的源代码安…...
资源监控告警:OpenClaw+Qwen3-32B镜像守护个人服务器
资源监控告警:OpenClawQwen3-32B镜像守护个人服务器 1. 为什么需要智能化的个人服务器监控? 去年我的个人服务器连续宕机三次——第一次因为内存泄漏导致OOM崩溃,第二次被挖矿程序占用全部CPU资源,第三次则是磁盘写满后无人察觉…...
JDK24虚拟线程pinning问题终于解决了!手把手教你如何避免同步代码块阻塞
JDK24虚拟线程pinning问题深度解析与实战优化指南 虚拟线程作为Java平台近年来最重要的并发模型革新,从JDK21的初次亮相到JDK24的成熟完善,已经逐步改变了Java开发者处理高并发的思维方式。本文将带您深入理解pinning问题的本质,掌握JDK24中的…...
PyCharm项目环境混乱?试试用Mamba+environment.yml打造可复现的纯净工作流
PyCharm项目环境混乱?试试用Mambaenvironment.yml打造可复现的纯净工作流 当团队协作开发Python项目时,最令人头疼的问题莫过于"在我机器上能跑"的经典困境。不同成员使用不同版本的依赖包,或者本地环境被多个项目污染,…...
把Camunda流程引擎当SaaS用?多租户与外部任务实战指南(基于RuoYi改造)
基于Camunda构建企业级流程中心的架构设计与实战 在数字化转型浪潮中,业务流程自动化已成为企业提升运营效率的核心手段。当一家企业同时运行CRM、OA、ERP等多个业务系统时,每个系统都需要工作流支持,但为每个系统单独部署和维护Camunda引擎显…...
Spring AI:Spring生态的AI工程框架全面解析
Spring AI:Spring生态的AI工程框架全面解析 【免费下载链接】spring-ai An Application Framework for AI Engineering 项目地址: https://gitcode.com/GitHub_Trending/spr/spring-ai Spring AI是Spring生态系统中的AI工程框架,为Java开发者提供…...
企业生产环境怎么正确做 Vibe Coding:不是让 AI 接管,而是把交付流程做成可控系统
这两年,vibe coding 很热。很多团队第一次接触它时,直觉都是:既然 AI 会写代码,那就让它多写一点,人少管一点,速度自然就上来了。 但一进企业生产环境,这种想法通常很快撞墙。 因为企业真正关心…...
MBPFan技术解析:MacBook在Linux环境下的智能散热控制机制
MBPFan技术解析:MacBook在Linux环境下的智能散热控制机制 【免费下载链接】mbpfan 项目地址: https://gitcode.com/gh_mirrors/mb/mbpfan 在Linux系统上使用MacBook的用户经常面临散热管理的技术挑战,系统原生的温度控制策略往往无法充分发挥苹果…...
