2015-07-31 17 views

Trả lời

8

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ọ chỉ mục.

+0

Câu trả lời này đúng, nhưng có lẽ cần được chỉnh sửa để trông đẹp hơn –

0

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.

Các vấn đề liên quan