当前位置: 首页 > 知识库问答 >
问题:

创建弹性搜索查询,按类别随机显示5个问题

羊舌新荣
2023-03-14

我有字段类别

我的要求是针对下面提到的3个类别,我需要通过编写弹性搜索查询来标记问题(因此我希望查询中的类别和问题字段)

类别:

OLA

BNA公司

DRG公司

获取logstash-sdc-反馈/_search?{"_source":["Category.keyword"],"大小":5,"查询":{"bool":{"必须": [ {"匹配":{"Category.keyword":"OLA","BNA","DRG"}}

],

}},"aggs":{"MyBuckets":{"条款":{"field":"questions.keyword","Category.keyword""order":{"_count":"asc"},"size":"5"

} } } }

共有1个答案

柯立果
2023-03-14

您可以使用术语查询和术语聚合来实现您的用例。

添加工作示例

指数数据:

{
  "category": "XYZ",
  "question": "d"
}
{
  "category": "OLA",
  "question": "a"
}
{
  "category": "BNA",
  "question": "b"
}
{
  "category": "DRG",
  "question": "c"
}

搜索查询:

{
  "query": {
    "bool": {
      "must": {
        "terms": {
          "category.keyword": [
            "OLA",
            "BNA",
            "DRG"
          ]
        }
      }
    }
  },
  "aggs": {
    "top_tags": {
      "terms": {
        "field": "category.keyword"
      },
      "aggs": {
        "top_faq_hits": {
          "top_hits": {
            "_source": {
              "includes": [
                "question"
              ]
            },
            "size": 1
          }
        }
      }
    }
  }
}

搜索结果:

"aggregations": {
    "top_tags": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "BNA",                 // note this
          "doc_count": 1,
          "top_faq_hits": {
            "hits": {
              "total": {
                "value": 1,
                "relation": "eq"
              },
              "max_score": 1.0,
              "hits": [
                {
                  "_index": "65566020",
                  "_type": "_doc",
                  "_id": "2",
                  "_score": 1.0,
                  "_source": {
                    "question": "b"            // note this
                  }
                }
              ]
            }
          }
        },
        {
          "key": "DRG",
          "doc_count": 1,
          "top_faq_hits": {
            "hits": {
              "total": {
                "value": 1,
                "relation": "eq"
              },
              "max_score": 1.0,
              "hits": [
                {
                  "_index": "65566020",
                  "_type": "_doc",
                  "_id": "3",
                  "_score": 1.0,
                  "_source": {
                    "question": "c"
                  }
                }
              ]
            }
          }
        },
        {
          "key": "OLA",
          "doc_count": 1,
          "top_faq_hits": {
            "hits": {
              "total": {
                "value": 1,
                "relation": "eq"
              },
              "max_score": 1.0,
              "hits": [
                {
                  "_index": "65566020",
                  "_type": "_doc",
                  "_id": "1",
                  "_score": 1.0,
                  "_source": {
                    "question": "a"
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
 类似资料:
  • 我在使用Python弹性搜索访问数据时遇到了一个问题。我正在得到 尝试使用时出错 我的弹性搜索版本6.5。4,python版本3.7。2.

  • 我正在LDAP服务器上工作。它有弹性搜索。我必须用一些Javascript代码(JSON格式)发送查询。 这是我的查询: 我试图打印所有结果,其中“server”=“server\u name”(该字段是server:server\u name…)。我认为关于弹性搜索的文档太小了。我找到了一些文档,但都是一样的,对新用户没有帮助。这个例子太简单了。 此查询返回所有结果,包括任何筛选器。 Ps:这就

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • ElasticSearch索引会随机变空,但大多数情况下,它发生在部署用Rails构建的应用程序之后。 以下是有关ElastiSearch的一些信息: curl-xget“http://localhost:9200/_nodes?pretty” curl-xget“http://localhost:9200/_cluster/health?pretty” curl“localhost:9200/_

  • 我在术语查询中要求弹性搜索中的嵌套字段,其中嵌套字段值应与术语查询中提供的值的数量完全匹配。例如,考虑下面的查询,在这里我们对名为类型的嵌套字段进行查询。 GET资产/_search 索引映射 样本文件: 上述查询应返回字段类型正好有2个值的文档,即“VOD”

  • 我刚加入弹性搜索公司。而不知道如何在JSON请求中对索引和an类型发出正确的请求?(所以我不想像localhost:9200/myindex/mytype/_search那样在URL中使用索引和类型,而是向localhost:9200/_search发出JSON请求) 我试过这样的东西。但我得到的结果是'AAA'索引而不是'BBB'索引。如何只从bbb索引得到结果或者根本没有结果?