2015-05-27 13 views
7

Tôi đang cố lọc các tài liệu bằng bộ lọc cụm từ. Tôi không chắc chắn làm thế nào để giới thiệu các ký tự đại diện trong bộ lọc. Tôi đã thử một cái gì đó như thế này:Truy vấn đàn hồi DSL: Ký tự đại diện trong bộ lọc thuật ngữ?

"filter":{ 
    "bool":{ 
     "must":{ 
      "terms":{ 
      "wildcard" : { 
       "aircraft":[ 
        "a380*" 
       ] 
      } 
     } 
     } 
    } 
} 

Nhưng tôi nhận được SearchParseException với điều này. Không có cách nào để sử dụng ký tự đại diện trong khung bộ lọc?

+1

bạn truy vấn trông giống như tìm kiếm tiền tố. U có thể sử dụng ngram cho nó – demon101

Trả lời

9

Bộ lọc terms không hỗ trợ các ký tự đại diện, các truy vấn thực hiện. Hãy thử truy vấn này để thay thế

{ 
    "query": { 
    "bool": { 
     "must": { 
     "wildcard": { 
      "aircraft": "a380*" 
     } 
     } 
    } 
    } 
} 

Hoặc nếu bạn hoàn toàn cần phải sử dụng các bộ lọc, bạn có thể thử các bộ lọc regexp, quá:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": { 
      "regexp": { 
       "aircraft": "a380.*" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

Regexp có hoạt động với bộ lọc thuật ngữ không? – Mohitt

+2

'regexp' là một bộ lọc riêng của nó, khác với bộ lọc' terms'. Các truy vấn – Val

+0

đặc biệt chậm hơn các bộ lọc. Tôi đoán thay vì các thuật ngữ, tôi nên đi cho nhiều regexp dưới một khối 'nên'. – Mohitt

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