Yêu cầu Oct 17th, 2017 1:09 a.m. 1013 0 1
  • 1013 0 1
0

Search LIKE trên Elastic search

Chia sẻ
  • 1013 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 Oct 17th, 2017 2:18 a.m.
Đã đượ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
Oct 18th, 2017 7:42 a.m.

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
Oct 18th, 2017 4:32 p.m.

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
Oct 23rd, 2017 5:45 a.m.

@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
Oct 23rd, 2017 5:45 a.m.

@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í