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

在Elasticsearch中返回不同的值

钱朝明
2023-03-14

我试图解决一个问题,我必须在搜索中得到明确的结果。

{
        "name" : "ABC",
        "favorite_cars" : [ "ferrari","toyota" ]
      }, {
        "name" : "ABC",
        "favorite_cars" : [ "ferrari","toyota" ]
      }, {
        "name" : "GEORGE",
        "favorite_cars" : [ "honda","Hyundae" ]
      }

当我对最喜欢的汽车“法拉利”执行术语查询时。我得到两个名为ABC的结果。在这种情况下,我只是希望返回的结果应该是一个。所以我的要求是,如果我可以应用一个不同的on name字段来接收一个1结果。

谢啦

共有1个答案

顾永福
2023-03-14

实现您想要的一种方法是在name字段上使用术语聚合,然后使用大小为1的top_hits子聚合,如下所示:

{
  "size": 0,
  "query": {
    "term": {
      "favorite_cars": "ferrari"
    }
  },
  "aggs": {
    "names": {
      "terms": {
        "field": "name"
      },
      "aggs": {
        "single_result": {
          "top_hits": {
            "size": 1
          }
        }
      }
    }
  }
}

这样,您将得到一个术语ABC,然后在其中嵌套一个匹配的文档

 类似资料:
  • 假设我有这个给定的数据 当我搜索最喜欢丰田车的人时,每当我查询这个数据时,它都会返回这个数据 结果是两个名为ABC的记录。如何只选择不同的文档?我想得到的结果只有这个 这是我的问题 我正在使用ElasticSearch 1.0.0。使用java api客户端

  • 问题内容: 我正在搜索索引中的文档,然后尝试通过获取其中的一些文档。尽管收到了一组结果,但是某些文档无法通过简单的get来检索。更糟糕的是,我可以通过URI搜索获得相同的文档,其中 例如,运行一个简单的GET 给我结果: 但是,如果我使用相同的_id进行搜索: 我得到了预期的结果: 我正在通过Stretcher ruby​​ API索引文档,索引后立即进行刷新。我的本地设置是 2个节点 。我正在运

  • 在我的应用程序中,有一个计算得到两个日期之间的天数。计算如下所示; 此方法在我的本地pc(windows 7,64位)上返回正确的值(即2015-03-10 00:00:00.0、2015-03-02 00:00:00.0,从存储库中检索的值为8,并传递给该方法)。但是,此方法在位于加拿大的pc(Windows 7,64位)上返回不正确的值(即2015-03-10 00:00:00.0、2015-

  • elasticsearch实例的一些背景: 一个节点,在一台机器上 特定索引由大小为1.23TB的26亿文档组成 索引被分成4个碎片。 堆大小设置为30 GB 服务器有256GB内存和40个内核。 Elasticsearch(版本1.4.3)是这个服务器上唯一运行的东西 我想返回所有具有特定名称的文档。属性名称已映射为: 我尝试过使用不同类型的搜索;过滤器、查询字符串、术语。结果都一样。当前查询如

  • 问题内容: 在IE7,IE8和Firefox上设置属性并返回不同的值: IE 8: IE 7: 火狐: 为什么存在这种差异? 在不使用jQuery的情况下,是否存在跨不同浏览器(IE8,IE7,Firefox)一致的等效属性? 问题答案: 这与浏览器的盒子模型有关。使用jQuery或其他JavaScript抽象库之类的东西来规范DOM模型。

  • 问题内容: Elasticsearch文档 建议 *他们的一段代码 *文件固定 对应于sql查询 但实际上对应于 我不想知道我有多少不同的值,但是什么是不同的值。有人知道如何实现吗? 问题答案: 在字段上使用术语汇总。并且您需要注意如何分析要获取不同值的字段,这意味着您需要确保在建立索引时没有对它进行标记,否则聚合中的每个条目都是一个不同的术语,属于字段内容。 如果您仍然希望令牌化并使用聚合,则可