Nếu reindexing là một lựa chọn, nó sẽ là tốt nhất để thay đổi lập bản đồ và đánh dấu các trường này là not_analyzed
"your_field" : { "type": "string", "index" : "not_analyzed" }
Bạn có thể sử dụng multi field type nếu giữ một phiên bản phân tích của lĩnh vực này là mong muốn:
"your_field" : {
"type" : "multi_field",
"fields" : {
"your_field" : {"type" : "string", "index" : "analyzed"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
}
Bằng cách này, bạn có thể tiếp tục sử dụng your_field
trong các truy vấn, trong khi chạy tìm kiếm khía cạnh sử dụng your_field.untouched
.
Ngoài ra, nếu lĩnh vực này được lưu trữ, bạn có thể sử dụng một khía cạnh lĩnh vực kịch bản thay vì:
"facets" : {
"term" : {
"terms" : {
"script_field" : "_fields.your_field.value"
}
}
}
Là phương sách cuối cùng, nếu lĩnh vực này không được lưu trữ, nhưng nguồn thu âm được lưu trữ trong chỉ mục, bạn có thể thử điều này:
"facets" : {
"term" : {
"terms" : {
"script_field" : "_source.your_field"
}
}
}
Giải pháp đầu tiên là hiệu quả nhất. Giải pháp cuối cùng là ít hiệu quả nhất và có thể mất rất nhiều thời gian trên một chỉ mục lớn.
bạn có thể cập nhật các câu hỏi với một ví dụ _short_ của dữ liệu và một ví dụ _short_ của truy vấn mà bạn đang làm, do đó, nó cung cấp thông tin hơn cho người dùng đến đây từ Tìm kiếm của Google, v.v ...? – karmi