【问题标题】:Elasticsearch: Is it possible to query for a term facet that contains more than a termElasticsearch:是否可以查询包含多个术语的术语方面
【发布时间】:2013-10-10 17:29:56
【问题描述】:

我的部分映射如下所示:

{
  ...
  INFO_NODO: {
    properties: {
      CODIGO: {
        type: string
      }
      ESTADO: {
        type: string
      }
      IN_HOME: {
        type: string
      }
      TEXTO: {
        type: string
      }
      ID_NODO: {
        type: integer
      }
      ...
    }
  }
}

我需要创建一个将返回字段的构面:ID_NODOTEXTOIN_HOMEESTADOCODIGOCOUNT 来解析它并将其提供给我的应用程序。关键是除COUNT 之外的所有这些字段都依赖于ID_NODO,也就是说,如果字段INFO_NODO 相同,则其余信息相同......理想情况下我会这样说使我的方面依赖于整个 INFO_NODO 字段而不是它的子字段。 我找到了几个解决方案,但我要么未能正确实施它们,要么就是无法正常工作。对我奇怪的情况有什么想法吗?

编辑:我需要做的是:

{
  "facets": {
    "FACET_X_NODO": {
      "terms": {
        "field": "INFO_NODO"
      }
    }
  }
}

因为INFO_NODO 是子文档而不是字段,所以我无法在任何文档中获取语法。

【问题讨论】:

  • 您应该查看脚本字段,您可以将所有子字段组合成一个键,这样您的计数就会汇总在一组字段上,而不仅仅是一个字段。

标签: elasticsearch facet


【解决方案1】:

如果我理解正确,你应该可以这样做:

{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "info_node_facet" : {
            "terms" : {
                "script_field" : "_source.INFO_NODO.CODIGO + _source.INFO_NODO.ESTADO",
                "size" : 10
            }
        }
    }
}

【讨论】:

  • 这并没有像你说的那样工作,因为它没有让我用 script_field 引用一个子字段,但是我花了很长时间尝试了这个:{“查询”:{“ match_all": {} }, "facets": { "info_node_facet": { "terms": { "script_field": "_source.INFO_NODO", "size": 10 } } } } 这完全符合我的需要.非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多