2013-08-14 41 views
19

Tôi muốn chỉ định một máy phân tích, đặt tên nó và sử dụng tên đó trong ánh xạ trong khi tạo chỉ mục. Tôi bị mất, ví dụ ES của tôi luôn trả về cho tôi một thông báo lỗi.Cách chỉ định một máy phân tích trong khi tạo chỉ mục trong ElasticSearch

này, khoảng, những gì tôi muốn làm:

"settings": { 
    "mappings": { 
    "alfedoc": { 
     "properties": { 
     "id": { "type": "string" }, 
     "alfefield": { "type": "string", "analyzer": "alfeanalyzer" } 
     } 
    } 
    }, 
    "analysis": { 
    "analyzer": { 
     "alfeanalyzer": { 
     "type": "pattern", 
     "pattern":"\\s+" 
     } 
    } 
    } 
} 

Nhưng điều này dường như không làm việc; trường hợp ES luôn trả về cho tôi một lỗi như

MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]]; 

Tôi đã thử đặt chi nhánh "analysis" của từ điển ở một số nơi (bên trong ánh xạ, vv) nhưng vô ích. Tôi đoán một ví dụ hoàn chỉnh làm việc (mà tôi không thể tìm thấy cho đến bây giờ) sẽ giúp tôi cùng là tốt. Có lẽ tôi đang thiếu một cái gì đó khá cơ bản.

Trả lời

27

"phân tích" được đặt trong khối "cài đặt", chặn trước hoặc sau khối "ánh xạ" khi tạo chỉ mục.

"settings": { 
    "analysis": { 
     "analyzer": { 
      "alfeanalyzer": { 
       "type": "pattern", 
       "pattern": "\\s+" 
      } 
     } 
    } 
}, 
"mappings": { 
    "alfedoc": { ... } 
} 

Dưới đây là một tốt đầy đủ, ví dụ: Example 1

+4

Vâng, thực sự, tôi quên rằng cú đúp cuối cùng dưới "Cài đặt". Vì vậy, "cài đặt" và "ánh xạ" phải là 2 khối riêng biệt và "phân tích" nên được bao gồm trong khối "cài đặt". –

+0

Các liên kết tuyệt vời đến các ví dụ, cảm ơn bạn. – pulkitsinghal

+1

Cảm ơn bạn đã liên kết, tìm thấy những gì tôi cần! Nhưng điểm mà bản đồ thực sự xác định những máy phân tích nào sử dụng cho một thuộc tính cụ thể là những gì tôi đã có thời gian khó khăn nhất trong việc tìm kiếm các ví dụ về. Nó sẽ là một bổ sung tuyệt vời cho câu trả lời của bạn;) –

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