【问题标题】:building query/filter in scala eclipse plugin for elastic search在 scala eclipse 插件中为弹性搜索构建查询/过滤器
【发布时间】:2014-05-13 17:44:43
【问题描述】:

我有这个文档结构:

{
        "_index": "catalogue",
        "_type": "attribute",
        "_id": "f26f19bb-5558-4e01-a021-d81cd895248d",
        "_score": 1,
        "_source": {
           "id": "f26f19bb-5558-4e01-a021-d81cd895248d",
           "tenantIds": [
              "1",
              "2"
           ]
        }
     }

我正在查询返回包含特定租户的所有文档。

我看起来像(In Sense 插件):

POST /catalogue/attribute/_search
{
"filter": {"terms": {
   "tenantIds": [
      "1"
   ]
}}
}

问题是当我尝试在弹性搜索 scala 插件中实现时 - 对于 eclipse,我遇到问题并且无法创建查询和过滤器,并且我找不到下降指南。

我尝试但没有得到回应的是:

    val tenantIdFilter = FilterBuilders.termFilter("tenantIds",tenantId.get+",all")
    val totalQuery = IndexQuery[AttributeSearchItem]().withBuilder(QueryBuilders.filteredQuery(QueryBuilders.boolQuery(),tenantIdFilter))
    val newProducts = this.search(totalQuery)

我得到空结果。我究竟做错了什么 ?

谢谢

【问题讨论】:

标签: scala playframework elasticsearch elasticsearch-plugin


【解决方案1】:

如果您想使用仅包含filter 的过滤查询,则必须为此filteredQueryquery 部分使用matchAll。在您的示例中,您使用了一个空的boolQuery,这就是它不返回任何结果的原因。

你应该试试这样的:

val totalQuery = IndexQuery[AttributeSearchItem]().withBuilder(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),tenantIdFilter))

【讨论】:

  • 嗨,我做了: val totalQuery = IndexQuery[AttributeSearchItem]().withBuilder(QueryBuilders.fieldQuery("tenantIds", tenantId.get+",all"))// .withBuilder(QueryBuilders.filteredQuery (QueryBuilders.boolQuery(),tenantIdFilter)) val newProducts = this.search(totalQuery)
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多