2015-01-08 13 views
5

Tôi cố gắng tìm hiểu Elasticsearch để thêm nó vào ứng dụng Rails của tôi. Tôi muốn thực hiện một truy vấn multi_match vào 2 lĩnh vực (như thể họ chỉ là một lĩnh vực duy nhất) và cũng có một bộ lọc để lĩnh vực khác (tình trạng) mà phải bằng 1.Tìm kiếm với multi_match AND bool

response = Wine.search({ 
      query: { 
       multi_match: { 
      query: "test", 
      fields: ["winery", "name"] 
      }, 
     bool: { 
      must: { 
      term: { status: 1 } 
      }, 
      should: [], 
      minimum_should_match: 1 
     } 
     }  
     }) 

Lỗi này là:

"fields\":[\"winery\",\"name\"]},\"bool\":{\"must\":{\"term\":{\"status\":1}},\"should\":[],\"minimum_should_match\":1}}}]]]; nested: ElasticsearchParseException[Expected field name but got START_OBJECT \"bool\"]; }]","status":400} 

Điều gì sai trong yêu cầu? Làm thế nào để thực hiện một multi_match và một BOOL với nhau?

Trả lời

13

Sử dụng một filtered query:

{ 
    "query": { 
     "filtered": { 
      "query": { 
       "multi_match": { 
        "query": "test", 
        "fields": [ 
         "winery", 
         "name" 
        ] 
       } 
      }, 
      "filter": { 
       "term": { 
        "status": "1" 
       } 
      } 
     } 
    } 
} 

Cùng truy vấn cho Elasticsearch 5:

{ 
    "query": { 
     "bool": { 
      "must": { 
       "multi_match": { 
        "query": "test", 
        "fields": [ 
         "winery", 
         "name" 
        ] 
       } 
      }, 
      "filter": { 
       "term": { 
        "status": "1" 
       } 
      } 
     } 
    } 
} 
+0

Perfect câu trả lời! Cảm ơn ! –

+0

Thật không may câu trả lời không còn hợp lệ cho ElasticSearch 5.x, trang tài liệu cập nhật cũng không giúp được gì nhiều. Bạn có biết cách chuyển đổi truy vấn multi_match sang truy vấn "bool" mới bằng bộ lọc không? – Overbryd

+1

Tôi đã cập nhật câu trả lời bằng truy vấn sẽ hoạt động với Elasticserarch 5.x. Để biết thêm thông tin, vui lòng xem tài liệu truy vấn bool: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html#query-dsl-bool-query –

Các vấn đề liên quan