【问题标题】:Elasticsearch DSL with multiple multi_match query in ruby在 ruby​​ 中具有多个 multi_match 查询的 Elasticsearch DSL
【发布时间】:2015-12-16 18:31:35
【问题描述】:

我有这种情况,其中在同一个查询中有两个 multi_match 搜索。问题是,当我在 ruby​​ 中为其创建 JSON 时,似乎不可能使用具有非唯一键的 json,因此只出现其中一个。

这是我的查询:

{
    "fields": ["id", "title", 
    "address.city", "address.state", "address.country", "address.state_code", "address.country_code", "proxy_titles", "location"],
    "size":2,
    "query":{
        "filtered":{
            "filter": {
                "range": {
                    "custom_score": {
                        "gte": 100
                    }
                }
            },
            "query":{
                "bool": {
                    "must": {
                        "multi_match":{
                            "query": "term 1",
                            "type": "cross_fields",
                            "fields": ["title^2", "proxy_titles^2","description"]
                        }
                    },
                    "must": {
                        "multi_match": {
                            "query": "us",
                            "fields": ["address.city", "address.country", "address.state",
                            "address.zone", "address.country_code", "address.state_code", "address.zone_code"]
                        }
                    }
                }
            }
        }
    },
    "sort": {
        "_score": { "order": "desc" },
        "variation": {"order": "asc"},
        "updated_at": { "order": "desc" }
    }
}

我也是最近才开始使用 elasticsearch,所以如果你能建议我更好的查询来完成同样的事情,那将非常有帮助。

【问题讨论】:

    标签: ruby-on-rails ruby json elasticsearch elasticsearch-rails


    【解决方案1】:

    你的语法错误。对于"bool" 中的多个"must" 值,它们需要在一个数组中。不幸的是,文档并不总是非常有帮助(bool query page 显示了 "should" 但不是 "must")。

    试试这个:

    {
       "fields": ["id","title","address.city","address.state","address.country","address.state_code","address.country_code","proxy_titles","location"],
       "size": 2,
       "query": {
          "filtered": {
             "filter": {
                "range": {
                   "custom_score": {
                      "gte": 100
                   }
                }
             },
             "query": {
                "bool": [
                   {
                      "must": {
                         "multi_match": {
                            "query": "term 1",
                            "type": "cross_fields",
                            "fields": ["title^2","proxy_titles^2","description"]
                         }
                      }
                   },
                   {
                      "must": {
                         "multi_match": {
                            "query": "us",
                            "fields": ["address.city","address.country","address.state","address.zone","address.country_code","address.state_code","address.zone_code"]
                         }
                      }
                   }
                ]
             }
          }
       },
       "sort": {
          "_score": {
             "order": "desc"
          },
          "variation": {
             "order": "asc"
          },
          "updated_at": {
             "order": "desc"
          }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2019-11-13
      • 2019-01-30
      相关资源
      最近更新 更多