【问题标题】:Elasticsearch - unify search results from different indexesElasticsearch - 统一来自不同索引的搜索结果
【发布时间】:2021-05-17 09:00:53
【问题描述】:

我想用不同的搜索查询对不同的索引进行搜索查询,并统一结果。 我知道有一个multi-target syntax,它允许我对多个索引执行特定的查询。

我想要的是对每个索引进行不同的查询,然后执行类似 UNION (SQL) 的操作。

有没有办法做到这一点?

【问题讨论】:

  • 所有索引都有重叠的数据点?我可以知道用例是什么……以便我可以提供更好的帮助
  • @SahilGupta 所有索引都有几个重叠的数据点。我想统一日期的结果,这会导致像新闻提要一样。

标签: elasticsearch


【解决方案1】:

您可以使用_index 元数据字段。这将帮助您使用不同的查询查询多个索引

添加一个包含索引数据、搜索查询和搜索结果的工作示例

索引数据

POST /index1/_doc/1
{
  "name":"foo"
}

POST /index2/_doc/1
{
  "name":"bar"
}

搜索查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "match": {
                  "name": "foo"
                }
              },
              {
                "term": {
                  "_index": "index1"
                }
              }
            ]
          }
        },
        {
          "bool": {
            "must": [
              {
                "match": {
                  "name": "bar"
                }
              },
              {
                "term": {
                  "_index": "index2"
                }
              }
            ]
          }
        }
      ]
    }
  }
}

搜索结果:

 "hits": [
      {
        "_index": "index1",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.287682,
        "_source": {
          "name": "foo"
        }
      },
      {
        "_index": "index2",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.287682,
        "_source": {
          "name": "bar"
        }
      }
    ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多