2012-10-09 25 views
5

Tôi đang sử dụng Elasticsearch và viết trình bao bọc của riêng tôi bằng cách sử dụng WebRequest vì NEST (lựa chọn thông thường) có vẻ không đủ khả năng chèn một mục và có ID được tạo trở lại.Làm cách nào để loại trừ nội dung HTML khỏi chỉ mục elasticsearch của tôi?

Dù sao - không có vấn đề gì với phương pháp chung. Tuy nhiên, bất kỳ nội dung HTML nào được lập chỉ mục dưới dạng, nghĩa là nếu tôi có <strong>test</strong> trong một trường, khi đó tìm kiếm truy vấn "mạnh" sẽ trả về mục.

Tôi đã đặt này trong elasticsearch.yml, dựa trên một bài bảng tin ngẫu nhiên tôi thấy:

index: 
    analysis: 
     analyzer: 
      htmlContentAnalyzer: 
       type: custom 
       tokenizer: standard 
       filter: standard 
       char_filter: html_strip 

Sau đó, tôi tạo ra một bản đồ thusly cho chỉ số của tôi 'content', loại mục 'news' :

PUT http://localhost:9200/content/news/_mapping 

{ 
    "news" : { 
     "properties" : { 
      "TextContent" : { 
       "type" : "string", 
       "index" : "analyzed", 
       "analyzer" : "htmlContentAnalyzer", 
       "store" : "yes" 
       } 
      } 
     } 
    } 
} 

Các store/yes chỉ dành cho "vui vẻ", nó làm cho không có sự khác biệt. Ở trên cho tôi một 200 OK.

Tuy nhiên, tìm kiếm trả lại kết quả tương tự.

Điều gì không giúp ích cho việc tài liệu elasticsearch có vẻ kinh khủng. Kiểm tra trang này:

http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping.html

nó mang lại cho bạn một tóm tắt ngắn gọn về bản đồ là gì, và nói thêm chi tiết trong phần lập bản đồ, tức là trang này:

http://www.elasticsearch.org/guide/reference/mapping/

.. mà dường như thực sự khủng khiếp. Không có gì đề cập đến biểu đồ định dạng/đối tượng tôi tìm thấy - không đề cập đến "thuộc tính", "loại", "phân tích", "chỉ mục" v.v. Có một số phần trên menu ở bên phải, ví dụ: "_index", nhưng họ dường như đề cập đến toàn bộ mục? Và nó được chỉ ra ở đâu?

Vì vậy, câu hỏi của tôi là trên hai mặt trận:

  • Làm thế nào để ngăn chặn các thẻ HTML (và các tổ chức, các giá trị tôi đoán thuộc tính) được lập chỉ mục? - Tôi vẫn muốn lưu trữ HTML, hãy nhớ rằng bạn
  • Có nguồn thông tin/tài liệu về elasticsearch tốt hơn không? Hay tôi đang nhìn nó mà không có cặp kính giải mã siêu bí mật?
+6

Được bỏ phiếu? Tôi chỉ có thể đoán bởi vì tôi nói tài liệu là khủng khiếp? Vâng, phải không? Ít nhất có những quả bóng để lại một bình luận nếu tôi đang phạm sai lầm/hiểu lầm –

Trả lời

3

Với tất cả tín dụng cho chrismale trên #elasticsearch (freenode IRC) -

Tìm kiếm chống lại _all là không tốt: được lập chỉ mục với phân tích riêng của mình. Truy vấn trên trường TextContent của tôi đã hoạt động như mong đợi.

+2

Hoặc, bạn có thể đặt tên cho bạn là "mặc định" và sau đó nó sẽ được áp dụng cho tất cả các trường bao gồm _all. (Để làm điều đó, chỉ cần thay thế "htmlContentAnalyzer:" với "mặc định:" trong tập tin elasticsearch.yml của bạn) – imotov

+1

Vâng, tôi đang đối mặt với cùng một vấn đề. Có cách nào tôi có thể đạt được như vậy mà không cần phải xác định bản đồ? –

+0

@AkshatJiwanSharma Bạn có sẵn lòng tìm ra nó mà không cần xác định ánh xạ trong tệp yml không? –

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