使用或不使用关键字过滤查询

Filter query with or without keyword

我有一个带有名称列和 category_id 列的 table。下面的查询 return 是一个 BadRequest 错误。我认为这是错误 blob 中最有意义的 returned。

*注:"something*"是我传入的关键字,用来搜索

Expected field name but got START_OBJECT

我正在寻找一个查询,该查询将 return 结果由 category_id 过滤,有或没有关键字搜索。

{
  query: {
    bool: {must: [{
      wildcard: {name: "something*"}
    ]},
    filtered: {
      filter: {
        bool: {
          must: {
            term: {category_id: 1}
          }
        }
      }
    }
  }, 
  sort: [{
    _geo_distance: {
      store_location: {:lat=>0, :lon=>0},
      order: "asc",
      unit: "miles"
    }
  }]
}

这个查询有什么问题?

如果我猜(即,这是未经测试的),我会说这是因为你的 bool 在 filtered 子查询之外。将它移动到你的 filtered 子查询中的 query 子查询中,如下所示:

{
  query: {
    filtered: {
      query: {
        bool: {must: [{
          wildcard: {name: "something*"}
        ]},
      },
      filter: {
        bool: {
          must: {
            term: {category_id: 1}
          }
        }
      }
    }
  }, 
  sort: [{
    _geo_distance: {
      store_location: {:lat=>0, :lon=>0},
      order: "asc",
      unit: "miles"
    }
  }]
}