2013-09-02 16 views
9

Tôi có truy vấn với multi_match trong Elasticsearch: giá trịTruy vấn nào phù hợp với trường trong tìm kiếm multi_match trong Elasticsearch?

{ 
    "query": { 
    "multi_match": { 
     "query": "luk", 
     "fields": [ 
     "xml_string.autocomplete", 
     "state" 
     ] 
    } 
    }, 
    "size": 10, 
    "fields": [ 
    "xml_string", 
    "state" 
    ] 
} 

Nó hoạt động tuyệt vời, trả kết quả mong đợi:

{ 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1, 
    "max_score": 0.41179964, 
    "hits": [ 
     { 
     "_index": "documents", 
     "_type": "document", 
     "_id": "11", 
     "_score": 0.41179964, 
     "fields": { 
      "xml_string": "Lukas bla bla bla", 
      "state": "new" 
     } 
     } 
    ] 
    } 
} 

tôi đã tìm kiếm rất nhiều, nhưng tôi không thể tìm ra các lĩnh vực khớp với truy vấn (nếu nó là xml_string OR state)

Trả lời

0

Theo tôi biết, không có tính năng nào cho bạn biết trường nào đã khớp với truy vấn.

Nhưng bạn có thể sử dụng tính năng giải thích để gỡ lỗi truy vấn của mình. Bạn chỉ phải thêm truy vấn của mình vào tham số &explain=true. Với tham số này, bạn sẽ thấy một lời giải thích cho mỗi trường lý do tại sao nó nằm trong tập kết quả và bạn sẽ đoán trường nào khớp với truy vấn.

+1

Cảm ơn bạn đã trả lời của bạn. tôi sợ rằng ai đó sẽ viết loại câu trả lời này :) Tôi đang tìm cách nào đó, để tìm kiếm trên nhiều trường và biết giá trị trả về trường nào. Nó dành cho tự động hoàn thành. Trong các phiên bản sau này, nó sẽ trả về số hóa đơn, hoặc tên nhà cung cấp ... – gertruda

+0

Tôi đã tìm thấy giải pháp, tôi đã thêm nó làm câu trả lời mới – gertruda

9

Tôi đã tìm thấy giải pháp: Tôi đã sử dụng tính năng nổi bật và nó làm việc rất lớn

Đây là cách curl của tôi trông giống như:

curl -X GET 'http://xxxxx.com:9200/documents/document/_search?load=false&size=10&pretty' -d '{ 
    "query": { 
     "multi_match": { 
      "query": "123", 
      "fields": ["some_field", "another_field"] 
     } 
    }, 
    "highlight": { 
     "fields": { 
      "some_field": {}, 
      "another_field": {} 
     } 
    }, 
    "size": 10, 
    "fields": ["field","another_field"] 
}' 
+0

Hoàn hảo bạn của tôi ... Nó sử dụng khi trường trùng khớp yêu cầu xử lý. – Siten