微网站下载资料怎么做,国外的贸易网站,吴江城乡住房和城乡建设局网站,打开链接的网站之前有个业务需求#xff0c;由于最开始存储到es里的#xff0c;是默认空字符串。
后面程序取数据时#xff0c;发现需要取空字符串的数据时#xff0c;不好取出来。
字符串的字段如图#xff1a; 实际数据如图#xff1a; 我用的是C#语言#xff0c;使用的是Elastic…之前有个业务需求由于最开始存储到es里的是默认空字符串。
后面程序取数据时发现需要取空字符串的数据时不好取出来。
字符串的字段如图 实际数据如图 我用的是C#语言使用的是Elasticsearch.Net和Nest两个类库查找字符串为空的数据。 最开始找网上的资料使用的判断条件是MustNotTerm
FuncQueryContainerDescriptorHotModelEsModel, QueryContainer query q q.Bool(a a.MustNot(m m.Term(f f.DataDate, )));
对应的Request是 竟然把我的条件去掉了拿到的结果自然就是错的。 只能再继续找资料使用新的判断条件是MustNotWildcard
FuncQueryContainerDescriptorHotModelEsModel, QueryContainer query q q.Bool(a a.MustNot(m m.Wildcard(f f.DataDate, *)));
对应的Request是拿到的结果却是空的。 只能继续查找资料使用Script方式
FuncQueryContainerDescriptorHotModelEsModel, QueryContainer query q q.Script(c c.Script(d d.Source(doc[DataDate].value).Lang(ScriptLang.Painless))); 对应的Request是 终于完美拿到结果了 但是Script相对来说效率会低一点点不到万不得已不使用。 因为之前问过大佬大佬给了一个新的解决方案TermsVerbatim
FuncQueryContainerDescriptorHotModelEsModel, QueryContainer query q q.Terms(tf tf.Verbatim().Field(t t.DataDate).Terms(new string[] { })); 对应的Request是 也成功了 把大佬的方案再优化一下使用TermVerbatim
FuncQueryContainerDescriptorHotModelEsModel, 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