gpt4 book ai didi

使用 ElasticSearch/Nest 过滤空字符串

转载 作者:行者123 更新时间:2023-11-29 02:51:48 26 4
gpt4 key购买 nike

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

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

我试过:

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

根据ElasticSearch and Nest filtering does not work被视为无条件查询并返回所有内容,同时添加 .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"
}
}
}
}

如有任何指点,我们将不胜感激。

最佳答案

作为documentation on NEST and writing queries提到你可以切换 Strict() 模式来触发异常,如果你的查询的一部分结果是 conditionless 但如果那是你真正想要的那么你就被卡住了我发现了。

我刚刚提交了一个 .Verbatim() 构造,它的工作方式与 .Strict() 完全相同,但它不会抛出异常,而是按原样获取查询并呈现它按照规定。

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

因此应该禁用conditionless 查询重写并按照指定的字面意义插入查询。

这将在下一个版本的 NEST 中实现(因此在当前版本 0.12.0.0 之后)

关于使用 ElasticSearch/Nest 过滤空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com