我正在特定地区的文档中搜索。文件具有各种状态。目的是返回所有文档,除非文档的状态码为ABCD
-仅当其ID大于100时才应返回此类文档。我尝试编写多个查询,包括下面的查询,该查询仅返回ABCD
个ID大于100的文档,没有其他文档。怎么了我如何也可以获取非ABCD文件?
"_source": true,
"from": 0,
"size": 50,
"sort": [
{
"firstStamp": "DESC"
}
],
"query": {
"bool": {
"must": [
{
"term": {
"districtId": "3755"
}
},
{
"bool": {
"must": [
{
"terms": {
"documentStatus.code.keyword": [
"ABCD"
]
}
},
{
"bool": {
"must": {
"script": {
"script": "doc['id'].value > 100"
}
}
}
}
]
}
}
]
}
}
}```
答案 0 :(得分:1)
由于您尚未添加任何索引映射,因此请查看您的搜索 查询数据似乎是object field data type的数据。据我所能 了解,您的目的是退还所有文件,但 文档的状态码为
ABCD
,文档的状态码为ABCD
仅当其ID大于100时才应返回。
添加包含索引数据,搜索查询和搜索结果的工作示例
索引数据:
{
"id":200,
"documentStatus":{
"code":"DEF"
}
}
{
"id":200,
"documentStatus":{
"code":"ABCD"
}
}
{
"id":100,
"documentStatus":{
"code":"ABCD"
}
}
搜索查询:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"terms": {
"documentStatus.code.keyword": [
"ABCD"
]
}
},
{
"bool": {
"must": {
"script": {
"script": "doc['id'].value > 100"
}
}
}
}
]
}
},
{
"bool": {
"must_not": {
"terms": {
"documentStatus.code.keyword": [
"ABCD"
]
}
}
}
}
]
}
}
}
搜索结果:
"hits": [
{
"_index": "stof_64351595",
"_type": "_doc",
"_id": "2",
"_score": 2.0,
"_source": {
"id": 200,
"documentStatus": {
"code": "ABCD"
}
}
},
{
"_index": "stof_64351595",
"_type": "_doc",
"_id": "3",
"_score": 0.0,
"_source": {
"id": 200,
"documentStatus": {
"code": "DEF"
}
}
}
]
答案 1 :(得分:1)
如果要具有状态代码= ABCD的文档,则需要在查询中使用must_not。因此,您的查询将如下所示:
"from": 0,
"size": 50,
"sort": [
{
"firstStamp": "DESC"
}
],
{
"query": {
"bool": {
"must": [
{
"term": {
"districtId": "3755"
}
},
{
"range": {
"id": {
"gt": 100
}
}
}
],
"must_not": [
{
"terms": {
"documentStatus.code.keyword": [
"ABCD"
]
}
}
]
}
}
}