2014-05-15 14 views
19

Trên rất nhiều trang web mà họ dạy cách truy vấn dữ liệu từ Elasticsearch bằng truy vấn phạm vi. Tôi muốn truy vấn dữ liệu nhỏ hơn hoặc bằng một số nào đó từ Elasticsearch sử dụng Chuỗi truy vấn kiểu Lucene như thế này.Chuỗi truy vấn Lucene Elasticsearch "nhỏ hơn hoặc bằng" [Tìm kiếm URI]

fieldname:[* TO 100] 

hoặc

fieldname:["*" TO "100"] 

Tôi đã cố gắng trong các định dạng khác, nhưng không ai trong số những người làm việc. Ai đó có thể giúp tôi?

+0

tôi đã cập nhật câu trả lời của tôi .. – BlackPOP

+0

nếu bạn không hài lòng với câu trả lời hỏi lại .. Đừng từ bỏ các câu hỏi. Chấp nhận câu trả lời và giúp đỡ người khác .. – BlackPOP

Trả lời

1

Tôi nghĩ rằng bạn muốn truy vấn các tài liệu với ít hơn bằng 100.

curl -XPOST "http://hostname:9200/index/try/_search" -d' 
{ 
"query": { 
    "range": { 
     "FieldName": { 
     "lte" : 100 
     } 
    } 
    } 
}' 

client PHP API

array(
'query' => array(
    'range' => array(
     'FieldName' => array(
      array("lte" => 100) 
     ) 
    ) 
) 
); 

cho các truy vấn hơn .. refer

Truy vấn định dạng mà bạn yêu cầu ..!

curl -XPOST "http://hostname:9200/index/type/_search?q=FieldName:[* to 100]" 

Làm ơn giúp ..!

+1

Tôi nghĩ đây không phải là chuỗi truy vấn Lucene. Tôi sử dụng API ứng dụng khách Elasticsearch PHP và tôi không muốn sử dụng định dạng JSON hoặc mảng làm tham số cho dữ liệu truy vấn nhưng muốn sử dụng chuỗi truy vấn Lucene thay thế. –

+0

phiên bản ES nào bạn đang sử dụng ??? – BlackPOP

+0

Đó là 1.0. Hy vọng bạn có thể giúp tôi ra ngoài. –

29

Bạn sẽ muốn sử dụng Query String Cú pháp (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html) dãy kết hợp với URI Tìm kiếm (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-uri-request.html)

Ranges

Phạm vi có thể được chỉ định cho các trường ngày, số hoặc chuỗi. Phạm vi bao gồm được chỉ định bằng dấu ngoặc vuông [min TO max] và các phạm vi độc quyền có dấu ngoặc nhọn {min TO max}.

All days in 2012: 

    date:[2012/01/01 TO 2012/12/31] 

    Numbers 1..5 

    count:[1 TO 5] 

    Tags between alpha and omega, excluding alpha and omega: 

    tag:{alpha TO omega} 

    Numbers from 10 upwards 

    count:[10 TO *] 

    Dates before 2012 

    date:{* TO 2012/01/01} 

Curly and square brackets can be combined: 

    Numbers from 1 up to but not including 5 

    count:[1..5} 

Ranges with one side unbounded can use the following syntax: 

age:>10 
age:>=10 
age:<10 
age:<=10 

Note 

To combine an upper and lower bound with the simplified syntax, you would need to join two clauses with an AND operator: 

age:(>=10 AND < 20) 
age:(+>=10 +<20) 

The parsing of ranges in query strings can be complex and error prone. It is much more reliable to use an explicit range filter. 

URI Tìm kiếm

Tìm kiếm URI Tìm trường Yêu cầu Tìm kiếm Body Tìm kiếm Shards API Tìm kiếm Template khía cạnh tính gộp Suggesters Context Suggester đa Search API Đếm API Validate API Giải thích cái vợt lọc API More Giống như API này Benchmark

Một yêu cầu tìm kiếm có thể được thực hiện hoàn toàn bằng cách sử dụng một URI bằng cách cung cấp các tham số yêu cầu . Không phải tất cả các tùy chọn tìm kiếm đều được hiển thị khi thực hiện tìm kiếm bằng chế độ này, nhưng nó có thể thuận tiện cho "kiểm tra curl" nhanh chóng. Dưới đây là một ví dụ:

$ curl -XGET 
'http://localhost:9200/twitter/tweet/_search?q=user:kimchy' 
Các vấn đề liên quan