Tôi thực sự không hiểu tại sao trong core types link nó nói trong bản mô tả các thuộc tính (đối với một số, ví dụ):Tại sao tôi cần "lưu trữ": "có" trong elasticsearch?
- cửa hàng - Thiết lập là yes để lưu trữ lĩnh vực thực tế trong chỉ mục, không để không lưu trữ nó . Mặc định là không (lưu ý, bản thân tài liệu JSON được lưu trữ và nó có thể được lấy từ nó)
- chỉ mục - Đặt thành không nếu giá trị không được lập chỉ mục. Trong trường hợp này, lưu trữ nên được đặt thành có, vì nếu nó không được lập chỉ mục và không được lưu trữ, có gì để làm với nó
Hai phần đậm dường như mâu thuẫn. Nếu "index":"no", "store":"no"
Tôi vẫn có thể nhận được giá trị từ nguồn. Điều này có thể là một sử dụng tốt nếu tôi có một trường có chứa một URL ví dụ. Không?
Tôi đã có một thử nghiệm nhỏ, trong đó tôi có hai ánh xạ, trong một trường được đặt thành "store":"yes"
và mặt khác là "store":"no"
.
Trong cả hai trường hợp tôi vẫn có thể chỉ định trong truy vấn của tôi:
{"query":{"match_all":{}}, "fields":["my_test_field"]}
và tôi đã nhận được câu trả lời tương tự, trở về lĩnh vực này.
Tôi nghĩ rằng nếu "store"
được đặt thành "no"
điều đó có nghĩa là tôi không thể truy xuất trường cụ thể, nhưng phải lấy toàn bộ số _source
và phân tích cú pháp đó ở phía máy khách.
Vì vậy, lợi ích nào có trong cài đặt "store"
đến "yes"
? Chỉ có liên quan nếu tôi loại trừ trường khỏi trường "_source"
một cách rõ ràng?
Thật tuyệt vời! Cảm ơn lời giải thích. – eran
"Hãy nhớ rằng việc truy xuất nhiều trường được lưu trữ từ lucene có thể yêu cầu một đĩa tìm kiếm trên mỗi trường trong khi chỉ truy xuất _source từ lucene và phân tích cú pháp để truy xuất các trường cần thiết chỉ là một đĩa tìm kiếm và nhanh hơn trong hầu hết các trường hợp. " Cho SSD được sử dụng để lưu trữ chỉ mục, có ảnh hưởng đến việc giảm số lượng người tìm kiếm đáng chú ý không? "Trong ổ cứng, điều này thường là từ 0,2 đến 0,8 ms. SSD điển hình sẽ có thời gian tìm kiếm từ 0,08 đến 0,16 ms". –
Cũng hữu ích khi lưu trữ rõ ràng các trường không được trả lại trong _source. Dấu thời gian là một ví dụ. Ngay cả khi bạn đã bật chúng trên một loại, bạn sẽ không thể truy xuất chúng ("trường": ["_timestamp"] sẽ không trả lại gì trừ khi bạn có "_timestamp": {"store": true} trong ánh xạ của bạn cho loại đó. – csjacobs24