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

时间:2015-05-01 04:10:07

标签: elasticsearch

我有一个名为column和category_id列的表。以下查询返回BadRequest错误。我认为这是从错误blob返回的最有意义的。

*注意:"something*"是我传递给搜索的关键字。

Expected field name but got START_OBJECT

我正在寻找一个查询,该查询会返回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"
    }
  }]
}

此查询有什么问题?

1 个答案:

答案 0 :(得分:0)

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

{
  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"
    }
  }]
}