elasticsearch 是一套基於 lucene 知名的 open source search tool ,他與 solr 相同都是為了提供 enterprise search platform 。整個 elasticsearch的使用情境都可以在原生的 JSON 與 RESTful 的環境中進行。
JSON / RESTful / Query DSL
"elasticsearch provides a full Query DSL based on JSON to define queries"除了 query DSL(domain specific language) 使用 JSON 與 REST 的方式做query ,還能怎麼query呢?
URL query string query
elasticsearch 也提供了把query string 放在 url 的 parameters 內當做request。但是並不是所有在 elasticsearch 內的 search 都有提供這樣的模式,直接使用 url paremeter,可以工作簡單的手動測試。
curl -XGET 'http://tmdesk:9200/articles/_search?q=name:pc'
response
{
"_shards": {
"failed": 0,
"successful": 5,
"total": 5
},
"hits": {
"hits": [
{
"_id": "B28BrraZR5qPQUWwgul2gQ",
"_index": "articles",
"_score": 0.19178301,
"_source": {
"tags": [
"foo"
],
"title": "One",
"name": "pc"
},
"_type": "article"
}
],
"max_score": 0.19178301,
"total": 1
},
"timed_out": false,
"took": 2
}
列舉出一些比較常見可以使用在 URL parameter的 args
- q :可使用 lucene 的query syntax
- df :default field
- analyzer :指定使用什麼analyzer 去 analyzing query string
- default_operator :可以使用 "AND" 或是 "OR" ,預設情況下是 "OR"
- fields: 指定要return 的 store fields 可以用 "," 分隔開。
- sort: 指定 sorting的依據,可以使用 "filedName" , "fieldName:asc" ,或是 "fieldName:desc"。
- from : 從 hits record的第幾筆資料開始return 預設是 0
- size : 指定 return 多少hit records ,預設是 10。
- search_type : dfs_query_then_fetch, dfs_query_and_fetch, query_then_fetch, query_and_fetch, count, scan. 預設是 "query_then_fetch"
- lowercase_expanded_terms : term 會被自動 lowercased 嗎? 預設是 true
Apache Lucene - Apache Lucene Core
http://lucene.apache.org/core/
沒有留言:
張貼留言