【问题标题】:Restrict search to specific domains将搜索限制在特定域
【发布时间】:2016-10-26 15:51:08
【问题描述】:

我正在使用 elasticsearch 插件,并且正在使用 elasticSearchService.search(myKeywords) 运行搜索,该插件在标记为 searchable 的所有域类中搜索关键字。

现在我想将搜索限制为两个特定的域类。我可以看到有名为 indices 和 types 的选项可以传递给搜索方法,但如果我只是在它们上使用我的域类名称,我会收到错误,告诉索引或类型不存在。我究竟应该怎么做才能实现我想要的?

(我是 lucene 和 elasticsearch 的新手,我不确定我是否理解索引和类型的概念。阅读文档时,我只能找到将搜索限制在特定字段的示例,而不是空域类或任何它映射到,在 lucene/elasticsearch 概念中)。

【问题讨论】:

  • 检查elasticSearchAdminService.indices 我可以看到为我的每个域类创建了一个索引。名称看起来像“org.mypackage_v0”。阅读文档后,我发现洞数据库的预期行为应该是一个index,并且每个域(表)都应该映射为type。我该怎么做?

标签: grails elasticsearch lucene elasticsearch-plugin


【解决方案1】:

要走的路是:

elasticSearchService.search(myKeywords, [types:["myPackage.MyClass","myPackage.MyOtherClass"]])

结果符合预期,但我仍然担心每个域有一个索引(和一种类型)。不是我所期望的,但我看不到如何将所有域类映射到洞数据库的单个索引,如 docs 所述

【讨论】:

  • 我知道插件默认为每个域包创建一个索引。要为应用程序创建单个索引,我们必须在 Config.groovy 中设置elasticSearch.index.name = 'myIndexName'
猜你喜欢
  • 2018-08-12
  • 2023-03-22
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
相关资源
最近更新 更多