【问题标题】:How to search across indexes and types?如何跨索引和类型进行搜索?
【发布时间】:2018-06-24 18:01:58
【问题描述】:

考虑我将文档存储在 Elastic Search 下。

跨类型搜索

这是我的 url(http://localhost:9200/bookstore/books/1001) 用于创建 id 为 1001 的书(1001 是数据库的主键)及以下 是文件

    {
      "title": "Java 8 Optional In Depth",
      "category":"Java",
      "published_date":"23-FEB-2017",
      "author":"Rambabu Posa"

     }

同样,我使用 URL http://localhost:9200/bookstore/pen/2001 和下面的文档创建笔索引

     {
      "name": "Parker",
      "category":"Ink",
      "buy_date":"15-Mar-2017",
      "price":"20"

     }

如果我需要在索引bookstore 下的任何字段下搜索类型(书籍和笔),我可以用http://localhost:9200/bookstore/_search?q=:any_keyword 来做吗?

跨索引搜索

我可以用http://localhost:9200/_search?q=:any_keyword 做吗?

【问题讨论】:

  • 您到底在寻找什么?因为您可以简单地执行localhost:9200/_search 来搜索类型和索引。
  • 我需要跨 1) 索引和 2) 跨类型搜索特定关键字

标签: elasticsearch


【解决方案1】:

http://localhost:9200/_search 是搜索所有索引和类型的正确端点,但q=:any_keyword 中缺少该字段。请参阅 the documentation — 类似于 q=my_field:any_keyword。如果要搜索所有字段,可以use the _all fieldq=any_keyword

但是,您并不想这样做/其他一些评论:

  1. 通常切换到request body search - 它具有所有功能,并且从长远来看是您想要使用的。
  2. _all field has been deprecated in 6.0;使用明确的copy_to 或指定您要搜索的特定字段。
  3. 在 6.0 中默认禁用每个索引的多个类型。更改您的映射以使用单一类型。
  4. 搜索所有索引可能会相当昂贵。如果可以,指定一个索引进行搜索;或者,您也可以定义通配符 (http://localhost:9200/foo*/_search) 或索引列表 (http://localhost:9200/foo,bar,baz/_search)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多