2013-01-04 17 views
7

Tôi đang cố gắng lập chỉ mục mongodb trong elasticsearch bằng cách sử dụng mongodb-river bằng lệnh sau đây nhưng ánh xạ tài liệu không có hiệu lực. Nó vẫn đang sử dụng trình phân tích mặc định (chuẩn) cho trường textánh xạ trong chỉ mục tạo trong elasticsearch qua sông mongodb không có hiệu lực

Mongodb-river Tài liệu chỉ định tạo chỉ mục nhưng không có tài liệu về cách cung cấp ánh xạ tùy chỉnh. Đây là những gì tôi đã thử. Có tài liệu nào khác mà tôi có thể tìm cách chỉ định các máy phân tích tùy chỉnh, v.v ... trong việc sử dụng mongodb-river hay không.

curl -XPUT "localhost:9200/_river/autocompleteindex/_meta" -d ' 
{ 
    "type": "mongodb", 
    "mongodb": { 
     "host": "rahulg-dc", 
     "port": "27017", 
     "db": "qna", 
     "collection": "autocomplete_questions" 
    }, 
    "index": { 
     "name": "autocompleteindex", 
     "type": "autocomplete_questions", 
     "analysis" : { 
       "analyzer" : { 
        "str_search_analyzer" : { 
          "tokenizer" : "keyword", 
          "filter" : ["lowercase"] 
         }, 

         "str_index_analyzer" : { 
         "tokenizer" : "keyword", 
         "filter" : ["lowercase", "ngram"] 
        } 
       }, 
       "filter" : { 
        "ngram" : { 
         "type" : "ngram", 
         "min_gram" : 2, 
         "max_gram" : 20 
        } 
       } 
      } 
    }, 
    "autocompleteindex": { 
     "_boost" : { 
      "name" : "po", 
      "null_value" : 1.0 
     }, 
     "properties": { 
       "po": { 
        "type": "double" 
       }, 
       "text": { 
        "type": "string", 
        "boost": 3.0, 
        "search_analyzer" : "str_search_analyzer", 
        "index_analyzer" : "str_index_analyzer" 
       }   
     } 
    } 
}' 

Truy vấn trả về kết quả phù hợp là tôi tìm kiếm theo từ đầy đủ nhưng không khớp với bất kỳ kết quả chuỗi con nào. Ngoài ra, yếu tố tăng không cho thấy hiệu quả của nó.

Tôi đang làm gì sai ??

Trả lời

8

Bạn phải tạo đầu tiên chỉ số của bạn với bạn index settings (phân tích):

"analysis" : { 
      "analyzer" : { 
       "str_search_analyzer" : { 
         "tokenizer" : "keyword", 
         "filter" : ["lowercase"] 
        }, 

        "str_index_analyzer" : { 
        "tokenizer" : "keyword", 
        "filter" : ["lowercase", "ngram"] 
       } 
      }, 
      "filter" : { 
       "ngram" : { 
        "type" : "ngram", 
        "min_gram" : 2, 
        "max_gram" : 20 
       } 
      } 
     } 

Sau đó, bạn có thể define a mapping cho loại hình của bạn:

"autocomplete_questions": { 
    "_boost" : { 
     "name" : "po", 
     "null_value" : 1.0 
    }, 
    "properties": { 
      "po": { 
       "type": "double" 
      }, 
      "text": { 
       "type": "string", 
       "boost": 3.0, 
       "search_analyzer" : "str_search_analyzer", 
       "index_analyzer" : "str_index_analyzer" 
      }   
    } 
} 

Và chỉ khi đó, bạn có thể tạo sông:

curl -XPUT "localhost:9200/_river/autocompleteindex/_meta" -d ' 
{ 
"type": "mongodb", 
"mongodb": { 
    "host": "rahulg-dc", 
    "port": "27017", 
    "db": "qna", 
    "collection": "autocomplete_questions" 
}, 
"index": { 
    "name": "autocompleteindex", 
    "type": "autocomplete_questions"} } 

Ứng dụng có trợ giúp không?

+0

Cảm ơn rất nhiều. Nó làm việc cho tôi. – Rahul

+0

Rất cám ơn người đàn ông! Đó thực sự là công trình =) – rusllonrails