ruby-on-rails - 如何在Elasticsearch中搜索多代

标签 ruby-on-rails ruby-on-rails-3 elasticsearch elasticsearch-rails

Elasticsearch的文章概述了如何基于一代人的搜索来查找对象:https://www.elastic.co/guide/en/elasticsearch/guide/current/grandparents.html

GET /company/country/_search
{
  "query": {
    "has_child": {
      "type": "branch",
      "query": {
        "has_child": {
          "type": "employee",
          "query": {
            "match": {
              "hobby": "hiking"
            }
          }
        }
      }
    }
  }
}

如果我还想查询分支中以“liverpool”开头的name怎么办?您如何修改此搜索以找到该内容?我不断收到格式错误,但似乎找不到有关如何在线嵌套查询的信息。

我已经尝试过了(它不起作用):
GET /company/country/_search
{
  "query": {
    "has_child": {
      "type": "branch",
      "query": {
        "has_child": {
          "type": "employee",
          "query": {
            "match": {
              "hobby": "hiking"
            }
          }
        },
        "match": {
          "name": "london"
        }
      }
    }
  }
}

我收到一条错误消息,说查询格式错误。

我尝试了bool,但是它也不起作用;我不能在 bool(boolean) 中使用has_child。

最佳答案

我能够使其与bool query一起使用。

如果我正确理解了您的问题,那么您应该执行以下操作:

POST /company/country/_search
{
   "query": {
      "has_child": {
         "type": "branch",
         "query": {
            "bool": {
               "must": [
                  {
                     "has_child": {
                        "type": "employee",
                        "query": {
                           "match": {
                              "hobby": "hiking"
                           }
                        }
                     }
                  },
                  {
                     "match": {
                        "name": "liverpool"
                     }
                  }
               ]
            }
         }
      }
   }
}

如果希望查询为“OR”而不是“AND”,请使用"should"而不是"must"

这是我为解决该问题而设置的一些代码:

http://sense.qbox.io/gist/cf4babbbd25a3b7a26f3ea9ce9c1b686e37dbcb9

关于ruby-on-rails - 如何在Elasticsearch中搜索多代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425622/

相关文章:

ruby-on-rails - 在现有数据库之上开始使用 ROR

ruby-on-rails - Rails 3 RSpec 2 NetBeans 集成

ruby-on-rails - rails : combining optional params into a query

elasticsearch - Spring 数据 Elasticsearch 中的可配置索引名称

elasticsearch - 过渡时Elasticsearch索引

ruby-on-rails - 如何在 Rails 4 中将 html 类添加到 I18n 语言环境链接?

javascript - Jquery 不更新值/变量

ruby-on-rails - rails : Get "gem css_views" working for dynamic CSS

elasticsearch - 在Elasticsearch中将Unix时间戳转换为日期时间

ruby-on-rails - 如何整合:missed days with :committed days in habits. rb?