Asked Oct 17th, 2017 1:09 a.m. 1054 0 1
  • 1054 0 1
0

Search LIKE trên Elastic search

Share
  • 1054 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 ANSWERS


Answered Oct 17th, 2017 2:18 a.m.
Accepted
+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

Share
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 ạ?

0
| Reply
Share
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')

0
| Reply
Share
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 ạ

0
| Reply
Share
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

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.