Elasticsearch cho phép bạn lưu trữ _type
cùng với _index
. Tôi đã tự hỏi nếu tôi đã cung cấp _id
của riêng tôi nên nó là duy nhất trên chỉ mục?ID elasticsearch có phải là duy nhất cho một loại hoặc chỉ mục không?
Trả lời
Nó phải là duy nhất cùng
PUT so
PUT /so/t1/1
{}
PUT /so/t2/1
{}
GET /so/_search
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "so",
"_type": "t2",
"_id": "1",
"_score": 1,
"_source": {}
},
{
"_index": "so",
"_type": "t1",
"_id": "1",
"_score": 1,
"_source": {}
}
]
}
}
Và lý do cho rằng: bạn không bao giờ có được tài liệu theo chỉ số w/o biết loại tài liệu, và truy vấn ES với truy vấn chỉ số rộng sẽ trả lại tài liệu bao gồm các loại của họ và chỉ mục.
Tuyệt đối, có một số cách để thực hiện.
Đầu tiên là sử dụng API PUT, cho phép chúng tôi chỉ định ID cho tài liệu. Vì vậy, đối với chỉ số index
và loại type
:
curl -XPUT "http://localhost:9200/index/type/1/" -d'
{
"test":"test"
}
nào mang lại cho tôi tài liệu này:
{
"_index": "index",
"_type": "type",
"_id": "1",
"_score": 1,
"_source": {
"test": "test"
}
}
Một cách khác là để định tuyến ID để một lĩnh vực duy nhất trong bản đồ của bạn. Ví dụ: băm md5. Vì vậy, đối với một chỉ số gọi là index
với một loại gọi là type
, chúng ta có thể xác định các bản đồ sau:
curl -XPUT "http://localhost:9200/index/_mapping/type" -d'
{
"type": {
"_id":{
"path" : "md5"
},
"properties": {
"md5": {
"type":"string"
}
}
}
}
Lần này, tôi sẽ sử dụng API POST, có thể tự động tạo ra một ID. Nếu bạn chưa chỉ định một đường dẫn trong ánh xạ của mình, nó sẽ tự động tạo một đường dẫn cho bạn.
curl -XPOST "http://localhost:9200/index/type/" -d'
{
"md5":"00000000000011111111222222223333"
}'
nào mang lại cho tôi những tài liệu sau đây trong một tìm kiếm:
{
"_index": "index",
"_type": "type",
"_id": "00000000000011111111222222223333",
"_score": 1,
"_source": {
"md5": "00000000000011111111222222223333"
}
}
Phương pháp thứ hai thường được ưa thích, vì nó cung cấp nhất quán trên các chỉ mục. Id hoàn toàn hợp lệ cho chỉ mục có thể là 1
như trong ví dụ hoặc dog
trong trường hợp khác.
- 1. Mysql: Trường duy nhất cần phải là chỉ mục?
- 2. Chỉ số UNREQUE của PostgreSQL không phải là duy nhất?
- 3. Chỉ mục duy nhất hoặc khóa duy nhất?
- 4. Lập chỉ mục danh sách có chỉ mục duy nhất
- 5. ManagedThreadID không phải là duy nhất?
- 6. Cột TimeStamp có phải là duy nhất không?
- 7. MongoDB + Elasticsearch hoặc chỉ Elasticsearch?
- 8. Có phải NSDocument và CoreData là một kết hợp có thể không, hoặc là NSPersistentDocument là cách duy nhất?
- 9. Có phải Secure.ANDROID_ID duy nhất cho mỗi thiết bị không?
- 10. MySQL id duy nhất hoặc kết hợp id
- 11. ID có phải là duy nhất trong toàn bộ trang không?
- 12. Tạo một id duy nhất
- 13. Là ID duy nhất của Lokijs?
- 14. Tạo ID duy nhất
- 15. Các tên chỉ mục có phải là duy nhất trên toàn bộ cơ sở dữ liệu trong Mysql không?
- 16. Chúng tôi có thể thực hiện chỉ mục hàng loạt mà không chỉ định ID tài liệu cho Elasticsearch không?
- 17. IE có phải là trình duyệt duy nhất (hoặc phiên bản) không cho phép thao tác đối tượng Flash không?
- 18. Một khóa ngoại có thể tham chiếu đến một chỉ mục không duy nhất không?
- 19. Chỉ mục duy nhất và không độc nhất
- 20. Cách lập chỉ mục bảng đa hình trong đường ray không phải là duy nhất "hiệp hội_type" và "hiệp hội_id"
- 21. FOSUserBundle: Xóa chỉ mục duy nhất cho emailCanonical
- 22. Hàng R có nghĩa là trên nhiều cột theo nhóm (hoặc ID duy nhất)
- 23. elasticsearch - truy vấn nhiều chỉ mục là có thể?
- 24. Có phải một tệp logback.xml duy nhất cho nhiều ứng dụng là một phương pháp hay không?
- 25. Tên chỉ mục H2 duy nhất
- 26. Các tên chỉ mục Postgres ở mức nào cần phải là duy nhất?
- 27. Tạo một ID duy nhất trong PHP
- 28. Tạo ID duy nhất cho một máy tính cụ thể
- 29. LoạiError: chỉ mục danh sách phải là số nguyên hoặc lát, không phải là str
- 30. Trích xuất chỉ một thư mục duy nhất từ tar
Câu trả lời này đúng, nhưng có lẽ cần được chỉnh sửa để trông đẹp hơn –