使用ElasticSearch/Nest过滤空字符串

 2012-随意_544 发布于 2023-02-13 08:28

这可能是一个愚蠢的问题,但如何使用Nest过滤ElasticSearch中的空字符串.具体来说,如何重新创建以下结果:

curl http://localhost:9200/test/event/_search
{
    "filter" : { "term" : { "target" : "" }}
}

我试过了:

(f => f
    .Term("target", "")
);

根据ElasticSearch和Nest过滤不起作用被视为无条件查询并返回所有内容,而添加.Strict()会抛出DslException:

(f => f
    .Strict().Term("target", "")
);

我也试过.Missing()和.Exists()无济于事.

我的_mapping的相关部分供参考:

{
    "event": {
        "dynamic": "false",
        "properties": {
            target": {
                "type": "string",
                "index": "not_analyzed",
                "store": true,
                "omit_norms": true,
                "index_options": "docs"
            }
        }
    }
}

任何指针都将非常感激.

1 个回答
  • 正如关于NEST和编写查询的文档所提到的那样,Strict()如果您的查询的一部分证明是conditionless,那么您可以切换模式以触发异常,但如果那就是您真正想要的那样,那么您就会被发现所困扰.

    我刚刚提交了一个.Verbatim()完全相同的构造,.Strict()但不是抛出异常,而是按原样查询并按指定渲染它.

    (f => f
        .Verbatim()
        .Term("target", "")
    );
    

    因此应禁用conditionless查询重写并按指定的字面插入查询.

    这将使它成为NEST的下一个版本(因此在当前版本的0.12.0.0之后)

    2023-02-13 08:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有