tôi sẽ đánh giá cao đề nghị cập nhật phiên bản ElasticSearch bạn nếu có thể, đã có những thay đổi đáng kể kể từ 0.9.x.
Câu hỏi này không đủ cụ thể, vì có nhiều cách mà ElasticSearch có thể thực hiện chức năng này và chúng hơi khác một chút so với mục tiêu tổng thể của bạn. Nếu bạn đang tìm cách tái tạo truy vấn SQL chính xác thì trong trường hợp này, hãy sử dụng truy vấn tiền tố hoặc truy vấn tiền tố.
Sử dụng một truy vấn wildcard:
Lưu ý: Hãy cẩn thận với các tìm kiếm ký tự đại diện, họ là chậm. Tránh sử dụng các ký tự đại diện ở đầu chuỗi của bạn.
GET /my_index/table_name/_search
{
"query": {
"wildcard": {
"field_name": "a*"
}
}
}
Hoặc Prefix query
GET /my_index/table_name/_search
{
"query": {
"prefix": {
"field_name": "a"
}
}
}
Hoặc partial matching:
Lưu ý: Bạn KHÔNG một cách mù quáng sử dụng phù hợp với từng phần, trong khi có những trường hợp góc cho nó sử dụng, sử dụng đúng máy phân tích hầu như luôn luôn tốt hơn.
Truy vấn chính xác này sẽ tương đương với LIKE '%a%'
, một lần nữa, có thể thiết lập tốt hơn với việc sử dụng ánh xạ chính xác và tìm kiếm truy vấn thông thường!
GET /my_index/table_name/_search
{
"query": {
"match_phrase": {
"field_name": "a"
}
}
}
Nếu bạn đang đọc này tự hỏi về truy vấn ES tương tự cho tìm kiếm-as-you-type tôi sẽ khuyên bạn nên đọc lên trên edge-ngrams, mà liên quan đến sử dụng hợp lý bản đồ tùy thuộc vào những gì bạn đang cố gắng để làm =)
Nguồn
2015-07-02 05:36:57
0.90.7 là phiên bản ES (rất) cũ. Tôi khuyên bạn nên sử dụng bản phát hành mới nhất. –
Ngoài ra, vui lòng đọc [tài liệu] (https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-matching.html)! Nó bao gồm nhiều trường hợp sử dụng và cung cấp các giải pháp khác nhau cho những gì bạn cần. –