Yêu cầu thg 10 17, 2017 1:09 SA 1012 0 1
  • 1012 0 1
0

Search LIKE trên Elastic search

Chia sẻ
  • 1012 0 1

Bên em đang nhận đc yêu cầu làm 4 loại seach: tuyệt đối, XXX%, %XXX, %XXX% nhưng vì đang làm search bằng Elastic search nên hiện nay chỉ để tìm đc kiểu %XXX%. Muốn tìm bằng 3 kiểu còn lại thì phải làm thế nào ạ? Đây là lần đầu tiên bên em làm với Elastic search nên ko có kinh nghiệm lại nghiên cứu mãi không ra.

1 CÂU TRẢ LỜI


Đã trả lời thg 10 17, 2017 2:18 SA
Đã được chấp nhận
+2

để search tuyệt đối thì bạn dùng

{
    "match" : {
        "message" : {"title": "XXX"}
    }
}

để search %XXX

{
    "match" : {
        "message" : {"title": "XXX"},
        "type" : "phrase_prefix"
    }
}

hoặc

{
    "wildcard" : { "name" : "ki*y" }
}

Sử dụng cách này có thể query cùng với các kí tự thay thế đặc biệt trong linux như kí tự * dùng để thay thế cho một xâu con bất kì, kí tự '?' để thay thế cho một kí tự bất kì, hoặc truy vấn bằng regular expression. Bạn nên cài thêm kibana cho dễ dùng nó giống kiểu phpmyadmin ây

Chia sẻ
Avatar Trịnh Lam @graywings
thg 10 18, 2017 7:42 SA

Em cảm ơn ạ. Nhưng anh phụ trách Elastic search bên em bảo không được. Anh đã từng áp dụng cách này và search LIKE thành công chưa ạ?

Avatar ngongo @huong.nhdh
thg 10 18, 2017 4:32 CH

Thât ra cách làm như @tuanna2704 thì cũng đã làm được rồi, Mình xin bổ xung thêm là nếu cần tính _score thì dùng cách trên, Còn nếu không thì dùng filter để tăng performent

Còn vấn đề bạn @graywings bảo làm không được thì bạn có thể tạo data để thử, có thể vấn đề nằm ở phần khác, chẳng hạn như field là text nhưng có thể nó đã alalyze string rồi (ví dụ '1234-yt' thì bị tách ra '1234' và 'yt')

Avatar Nguyen Anh Tuan @tuanna2704
thg 10 23, 2017 5:45 SA

@graywings xin lỗi bạn h mình mới đọc tin nhắn ạ, bạn có thể show code lên đây không ạ

Avatar Nguyen Anh Tuan @tuanna2704
thg 10 23, 2017 5:45 SA

@huong.nhdh thank bác h mình mới biết :v

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí