提升查询,从文档中复制

boosting query, copied from documentation

我正在尝试创建增强查询,如 documentation 中所示 但是当我尝试

{
  "query": {
    "match_all":{}
  },
  "boosting": {
    "positive": {
      "term": {
        "is_job_seeking": 1
      }
    },
    "negative": {
      "term": {
        "is_job_seeking": 0
      }
    }
  },
  "negative_boost" : 0.2
}

它不工作我收到错误

error: SearchPhaseExecutionException[Failed to execute phase [query], all shards failed;
        shardFailures {[bP7jZnVHSRu83G30B0uSmw][idx_users_all_backup_dev][0]: 
        SearchParseException[[idx_users_all_backup_dev][0]: from[-1],size[-1]: 
        Parse Failure [Failed to parse source [
          {
            "boosting": {
              "positive": {
                "term": {
                  "field1":"value1"
                }
              },
              "negative": {
                "term": {
                  "field2":"value2"
                }
              },
              "negative_boost":0.2
            }
          }
        ]]];
        nested: SearchParseException[[idx_users_all_backup_dev][0]: from[-1],size[-1]: 
        Parse Failure [No parser for element [boosting]]]; }{[bP7jZnVHSRu83G30B0uSmw][idx_users_all_backup_dev][1]: 
        SearchParseException[[idx_users_all_backup_dev][1]: from[-1],size[-1]: 
        Parse Failure [Failed to parse source [
          {
            "boosting": {
              "positive": {
                "term": {
                  "field1":"value1"
                }
              },
              "negative": {
                "term": {
                  "field2":"value2"
                }
              },
              "negative_boost":0.2
            }
          }  
        ]]]; 
        nested: SearchParseException[[idx_users_all_backup_dev][1]: from[-1],size[-1]: 
        Parse Failure [No parser for element [boosting]]]; }{[bP7jZnVHSRu83G30B0uSmw][idx_users_all_backup_dev][2]: 
        SearchParseException[[idx_users_all_backup_dev][2]: from[-1],size[-1]: 
        Parse Failure [Failed to parse source [
          {
            "boosting": {
              "positive": {
                "term": {
                  "field1":"value1"
                }
              },
              "negative": {
                "term": {
                  "field2":"value2"
                }
              },
              "negative_boost":0.2
            }
          }
        ]]]; nested: SearchParseException[[idx_users_all_backup_dev][2]: from[-1],size[-1]: 
        Parse Failure [No parser for element [boosting]]]; }{[bP7jZnVHSRu83G30B0uSmw][idx_users_all_backup_dev][3]: 
        SearchParseException[[idx_users_all_backup_dev][3]: from[-1],size[-1]: 
        Parse Failure [Failed to parse source [
          {
            "boosting": {
              "positive": {
                "term": {
                  "field1":"value1"
                }
              },
              "negative": {
                "term": {
                  "field2":"value2"
                }
              },
              "negative_boost":0.2
            }
          }
        ]]]; nested: SearchParseException[[idx_users_all_backup_dev][3]: from[-1],size[-1]: 
        Parse Failure [No parser for element [boosting]]]; }{[bP7jZnVHSRu83G30B0uSmw][idx_users_all_backup_dev][4]: 
        SearchParseException[[idx_users_all_backup_dev][4]: from[-1],size[-1]: 
        Parse Failure [Failed to parse source [
          {
            "boosting": {
              "positive": {
                "term": {
                  "field1":"value1"
                }
              },
              "negative": {
                "term": {
                  "field2":"value2"
                }
              },
              "negative_boost":0.2
            }
          }
        ]]]; 
        nested: SearchParseException[[idx_users_all_backup_dev][4]: from[-1],size[-1]: 
        Parse Failure [No parser for element [boosting]]]; }]
status: 400

我也尝试添加 explain: true 但它没有给我任何关于查询错误的额外信息。

编辑 我写过这样的查询

{
  "sort": [
    {
      "is_active": "asc"
    }
  ],
  "fields": [
    "is_job_seeking", "is_active"
  ],
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": {
              "term": {
                "is_job_seeking": 1
              }
            }
          }
        },
        {
          "boosting": {
            "positive": {
              "term": {
                "is_active": 1
              }
            },
            "negative": {
              "term": {
                "is_active": 0
              }
            },
            "negative_boost": 0.3
          }
        }
      ]
    }
  }
}

并且此查询给了我 1000 个结果,但是没有包含 is_active=0 的文档,当我删除 boosting 部分时,我用文档 is_active=0

更正了结果

您的查询应该是这样的:

{
  "query": {
    "boosting": {
      "positive": {
        "term": {
          "is_job_seeking": 1
        }
      },
      "negative": {
        "term": {
          "is_job_seeking": 0
        }
      },
      "negative_boost": 0.2
    }
  }
}

bool:

{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "text": {
              "value": "something"
            }
          }
        },
        {
          "boosting": {
            "positive": {
              "term": {
                "is_job_seeking": 1
              }
            },
            "negative": {
              "term": {
                "is_job_seeking": 0
              }
            },
            "negative_boost": 0.2
          }
        }
      ]
    }
  }
}