【发布时间】:2022-01-22 06:59:54
【问题描述】:
我正在编写一个 Java 应用程序并使用弹性搜索作为数据库。
我正在寻找一种编写“不包含”查询的方法。
例如,我有一个带有值的字段类别:
- 汽车
- 公交车
- 火车
- 快车
现在我想获取所有类别中不包含“快速”的条目。
如何构建这样的查询? 我一直在这附近寻找,但找不到任何东西。
提前致谢
感谢@James 和@Bhavya Gupta,我可以更新我的查询,但它没有按预期工作。
我现在的查询是:
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"bool": {
"must_not": [
{
"term": {
"BetriebsID": "Aufzug"
}
} ]
}
}
}
}
但结果仍然包含这样的命中:
"hits": [
"_source": {
...
"FormNo": 9150520000000692,
"CreatedTime": "2020-05-15T08:19:03.000Z",
"templateId": "Aufzugsstoerung",
"SYS_FORM_ID": "150520_000000692",
"trecId": 151,
"BetriebsID": "20200515_1019_Aufzugsstoerung",
"displayName": "Aufzugsstörung",
...
}
}]
我也尝试了 James 的通配符查询,结果相同。
【问题讨论】:
-
你有没有机会仔细阅读我的回答,期待得到你的反馈:)
-
是的,但我不适合我。我更新了我的问题。请看一看。
-
所以我让查询工作。错误是,BetriebsId 上有一个关键字映射。所以我需要过滤 BetriebsId.keyword。比查询按预期工作
标签: java elasticsearch