弹性搜索 API 方面

Elastic search API facets

提问人:Aswanth vp 提问时间:10/3/2023 更新时间:10/3/2023 访问量:49

问:

我想使用弹性搜索 API 分面实现分面。我试过了,但收到错误

我有以下格式的数据

{
     field1:"data",
     field2 :{
                       innerField1 : "data2",
                      innerField2: "data3"
                 }
}

我想使用搜索 API 实现分面,以获取不同的 innerField2 及其计数。

{
  "query": {
    "bool": {
      "must": [
        {
          // query
        }
      ]
    }
  },
  "facets": {
    "innerField2": [
      {
        "type": "value",
        "name": "innerField2",
        "sort": { "count": "desc" },
        "size": 10
      }
    ]
  }
}

我想知道如何正确传递分面以获取分面信息。

因为我收到错误

"error": {
                    "root_cause": [
                        {
                            "type": "parsing_exception",
                            "reason": "Unknown key for a START_OBJECT in [facets].",
                            "line": 1,
                            "col": 133
                        }
                    ],
                    "type": "parsing_exception",
                    "reason": "Unknown key for a START_OBJECT in [facets].",
                    "line": 1,
                    "col": 133
                },
                "status": 4

文件如下:https://www.elastic.co/guide/en/app-search/current/facets.html

Elasticsearch 分面

评论


答:

0赞 Val 10/3/2023 #1

您引用的文档适用于 App Search API。App Search 在 Elasticsearch 上运行,并具有不同的 API。

您可能正在寻找 Elasticsearch Aggregations API,更具体地说,是术语聚合

POST your-index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          // query
        }
      ]
    }
  },
  "aggs": {
    "innerField2": {
      "terms": {
        "field": "field.innerField2"
      }
    }
  }
}

评论

0赞 Aswanth vp 10/3/2023
这是否也会返回结果和分面信息?我想要一个与这个例子类似的结果。elastic.co/guide/en/app-search/current/facets-guide.html。他们能够使用上述 API 获得分面和结果
0赞 Aswanth vp 10/3/2023
我的字段是文本字段,而不是关键字,所以我不能在关键字字段上使用鸡蛋
0赞 Val 10/3/2023
您可以创建一个关键字子字段以使其正常工作。