Có cách nào để tìm hiểu thông qua API elasticsearch cách một số thực tế được phân tích cú pháp? query string query? Bạn có thể làm điều đó theo cách thủ công bằng cách nhìn vào lucene query syntax, nhưng nó sẽ thực sự tốt đẹp nếu bạn có thể xem xét một số đại diện của các kết quả thực tế mà trình phân tích cú pháp có.Làm thế nào để tìm ra kết quả của elasticsearch phân tích cú pháp query_string?
Trả lời
Như javanna được đề cập trong nhận xét có _validate api. Dưới đây là những gì hoạt động trên đàn hồi cục bộ của tôi (phiên bản 1.6):
curl -XGET 'http://localhost:9201/pl/_validate/query?explain&pretty' -d'
{
"query": {
"query_string": {
"query": "a OR (b AND c) OR (d AND NOT(e or f))",
"default_field": "t"
}
}
}
'
pl
là tên chỉ mục trên cụm của tôi. Chỉ mục khác nhau có thể có các trình phân tích khác nhau, đó là lý do tại sao xác thực truy vấn được thực thi trong phạm vi chỉ mục.
Kết quả của curl trên là như sau:
{
"valid" : true,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"explanations" : [ {
"index" : "pl",
"valid" : true,
"explanation" : "filtered(t:a (+t:b +t:c) (+t:d -(t:e t:or t:f)))->cache([email protected]f1)"
} ]
}
tôi đã thực hiện một OR
chữ thường về mục đích và như bạn có thể nhìn thấy trong lời giải thích, nó được xem như là một mã thông báo và không phải là một nhà điều hành.
Để giải thích về giải thích. Định dạng tương tự như +-
operators của query string
truy vấn:
- (và) ký tự bắt đầu và kết thúc
bool query
- + tiền tố có nghĩa là điều khoản đó sẽ được ở
must
- - tiền tố có nghĩa là điều khoản đó sẽ được ở
must_not
- không có tiền tố có nghĩa là nó sẽ ở trong
should
(vớidefault_operator
bằngOR
)
Vì vậy, ở trên sẽ tương đương với sau:
{
"bool" : {
"should" : [
{
"term" : { "t" : "a" }
},
{
"bool": {
"must": [
{
"term" : { "t" : "b" }
},
{
"term" : { "t" : "c" }
}
]
}
},
{
"bool": {
"must": {
"term" : { "t" : "d" }
},
"must_not": {
"bool": {
"should": [
{
"term" : { "t" : "e" }
},
{
"term" : { "t" : "or" }
},
{
"term" : { "t" : "f" }
}
]
}
}
}
}
]
}
}
tôi đã sử dụng _validate
api khá nặng nề để gỡ lỗi phức tạp filtered
truy vấn với nhiều điều kiện. Nó đặc biệt hữu ích nếu bạn muốn kiểm tra cách phân tích đầu vào được phân tích như một url hoặc nếu một số bộ lọc được lưu trong bộ nhớ cache.
Ngoài ra còn có một tham số tuyệt vời rewrite
mà tôi không biết cho đến bây giờ, điều này làm cho giải thích thậm chí còn chi tiết hơn khi hiển thị truy vấn Lucene thực tế sẽ được thực thi.
- 1. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 2. làm thế nào để tạo ra một phân tích cú pháp cho truy vấn tìm kiếm
- 3. Elasticsearch với phân tích quả cầu tuyết chỉ trả về kết quả cho từ bắt nguồn
- 4. Phân tích cú pháp của Clojure
- 5. Phân tích cú pháp đầu ra của lệnh trong Python
- 6. Cách hiệu quả nhất để phân tích cú pháp Xml
- 7. Phân tích cú pháp đầu ra quét iw wlan0
- 8. Phân tích cú pháp XML của Python
- 9. Trình phân tích cú pháp Wiki nào?
- 10. Làm cách nào để phân tích cú pháp tệp CSV trong Perl hiệu quả?
- 11. làm cách nào để phân tích cú pháp tệp dtd
- 12. Scala: Làm phẳng phân tích cú pháp (~) từ trình kết hợp bộ phân tích cú pháp thành Danh sách?
- 13. Làm cách nào để phân tích cú pháp mảng numpy?
- 14. Làm thế nào để phân tích cú pháp XML bằng cách sử dụng jQuery?
- 15. Làm cách nào để phân tích cú pháp logic boolean?
- 16. Làm cách nào để phân tích cú pháp URL web?
- 17. Ocaml chuỗi phân tích cú pháp để làm cho cây
- 18. Bạn sẽ phân tích cú pháp Markdown như thế nào?
- 19. Trình phân tích cú pháp phân tích cú pháp Haskell để gặp phải [...]
- 20. Trình phân tích cú pháp phân tích cú pháp của scala có phân tích cú pháp các tệp nhị phân không?
- 21. Lựa chọn thay thế cho FastDateFormat để phân tích cú pháp ngày hiệu quả?
- 22. Tìm hiểu thêm về phân tích cú pháp
- 23. Phân tích cú pháp Ruby: phân tích cú pháp nhiều dòng
- 24. Cần trợ giúp cú pháp python lxml để phân tích cú pháp html
- 25. Máy tạo phân tích cú pháp và Ragel ... Làm cho trình phân tích cú pháp D của riêng tôi
- 26. Tìm kiếm trình phân tích cú pháp mã C#
- 27. Làm cách nào để sử dụng API phân tích cú pháp của Google Json (Gson) để phân tích cú pháp một số trường động trong json của tôi?
- 28. Cách làm: Phân tích cú pháp mục nhập của UninstallString
- 29. libxml2 Phân tích cú pháp HTML
- 30. Không thể phân tích cú pháp html sử dụng lxml XPath phân tích cú pháp
Bạn đã thử bật đầu ra giải thích bằng cách thêm giải thích = true vào yêu cầu tìm kiếm của mình chưa? – javanna
@javanna Vì mục đích giải thích = true chỉ là để giải thích đánh giá của từng kết quả, giúp một chút để đoán những gì đang xảy ra. Nhưng tôi muốn một cái gì đó rõ ràng, đặc biệt là cho các trường hợp phức tạp. –
Phải, hãy xem [xác thực truy vấn api] (http://www.elasticsearch.org/guide/reference/api/validate/) sau đó, và sử dụng giải thích ở đó, nên tốt hơn. – javanna