ElasticSearch(1)Installation and Simple Use
1. Introduction and Installation
Elasticsearch is based on Apache lucene. ES provide RESTful API.
Download the last one from here http://www.elasticsearch.org/download/
I download the version 1.4.0 this time. https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.0.tar.gz
Unzip the file and place it in the working directory.
Start the Server
>bin/elasticsearch
Visit this URL
http://localhost:9200/?pretty
{
"status" : 200,
"name" : "Mar-Vell",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.4.0",
"build_hash" : "bc94bd81298f81c656893ab1ddddd30a99356066",
"build_timestamp" : "2014-11-05T14:26:12Z",
"build_snapshot" : false,
"lucene_version" : "4.10.2"
},
"tagline" : "You Know, for Search"
}
We install and start the server successfully.
2. API
Java API
Node Client: The Node client will join the cluster. The system does not have any data in Node Client. But Node Client know where is the data.
Transport Client: It will not join the cluster, but it will send the request to the cluster.
http://www.elasticsearch.org/guide/
It seems that we have Java, JavaScript, Groovy, PHP, Perl, Python, Ruby API.
HTTP RESTful API
use CURL to check how many files we have
>curl -XGET 'http://localhost:9200/_count?pretty' -d '
> { > "query":{ > "match_all":{} > } > } > ' { "count" : 0, "_shards" : { "total" : 0, "successful" : 0, "failed" : 0 } }
-i will ask curl to response the header information
>curl -i -XGET 'localhost:9200/'
HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Content-Length: 336
…snip…
3. Document Oriented
JSON, ES(elastic search) will store and index the JSON data.
4. Build Index
Create a Employee List
Normal Database ——> Database ——> Table ——> Row ——> Columns
Elasticsearch ———> Index ——>Type ——>Doc ——> Fields
create the index
>curl -XPUT 'http://localhost:9200/megacorp/employee/1' -d '
> { > "first_name" : "Carl", > "last_name" : "Luo", > "age": 33, > "about": " I love java, python, scala, groovy", > "interests": [ "sports", "music"] > } > ' {"_index":"megacorp","_type":"employee","_id":"1","_version":1,"created":true}
megacorp is the index name, something like database
employee is the type name, something like the table
1 is the id of the doc.
Create some Other Data
>curl -XPUT 'http://localhost:9200/megacorp/employee/1' -d '
> {> "first_name" : "Carl",> "last_name" : "Luo",> "age": 33,> "about": " I love java, python, scala, groovy",> "interests": [ "sports", "music"]> }> '
>curl -XPUT 'http://localhost:9200/megacorp/employee/3' -d '
> { > "first_name" : "Douglas", > "last_name" : "Fir", > "age" : 35, > "about" : "I like to build cabinets", > "interests" : [ "forestry" ] > } > '
5. Search the Doc
Something like key value, if we plan to fetch some data, just do like this.
>curl -XGET 'http://localhost:9200/megacorp/employee/1'
{"_index":"megacorp","_type":"employee","_id":"1","_version":1,"found":true,"_source": { "first_name" : "Carl", "last_name" : "Luo", "age": 33, "about": " I love java, python, scala, groovy", "interests": [ "sports", "music"] }
GET, DELETE
Something Useful for Search
List all the employee
>curl -XGET 'http://localhost:9200/megacorp/employee/_search'
Query String for Search
>curl -XGET 'http://localhost:9200/megacorp/employee/_search?q=last_name:Smith'
{"took":25,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.30685282,"hits":[{"_index":"megacorp","_type":"employee","_id":"2","_score":0.30685282,"_source": { "first_name" : "Jane", "last_name" : "Smith", "age" : 32, "about" : " I like to collect rock albums", "interests" : [ "music" ] }
_search?q=last_name:Smith
Using Query DSL
Domain Specific Language, JSON
>curl -XGET 'http://localhost:9200/megacorp/employee/_search' -d '
{ "query" : { "match" : { "last_name" : "Smith" } } }'
Try Complex Query
curl -XGET 'http://localhost:9200/megacorp/employee/_search' -d ' > { > "query" : { > "filtered" : { > "filter" : { > "range": { > "age" : { "gt" : 30 } > } > }, > "query" : { > "match" : { > "last_name" : "Smith" > } > } > } > } > } > '
Add Filter for the age > 30. gt is short for Greater Than.
6. Search the Full Document
{
“query” : {
“match” : {
“about” : “rock climbing"
}
}
}
It will return the about column contains “rock”, “climbing”, “rock climbing"
{
“query” : {
“match_phrase” : {
“about” : “rock climbing"
}
}
}
match phrase will only return the “rock climbing”
High Light the Search Result
>curl -XGET 'http://localhost:9200/megacorp/employee/_search' -d '
{ > "query":{ > "match_phrase":{ > "about" : "rock albums" > } > }, > "highlight":{ > "fields":{ > "about":{} > } > } > } > ' {"took":26,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.23013961,"hits":[{"_index":"megacorp","_type":"employee","_id":"2","_score":0.23013961,"_source": { "first_name" : "Jane", "last_name" : "Smith", "age" : 32, "about" : " I like to collect rock albums", "interests" : [ "music" ] } ,"highlight":{"about":[" I like to collect <em>rock</em> <em>albums</em>"]}}]}}
7. Aggregations
curl -XGET 'http://localhost:9200/megacorp/employee/_search' -d ' { "aggs":{ "all_interests":{ "terms": { "field" : "interests" } } } } '
http://fuxiaopang.gitbooks.io/learnelasticsearch/content/getting_started/tutorial_aggregations.html
References:
http://www.elasticsearch.org/overview/
http://fuxiaopang.gitbooks.io/learnelasticsearch/content/
http://www.oschina.net/translate/elasticsearch-getting-started
http://liuhongjiang.github.io/tech/blog/2013/01/11/es/
http://nkcoder.github.io/blog/20140217/elasticsearch-install-config/
相关推荐
Here’s a basic example of how to connect to an Elasticsearch instance and perform a simple search query using the `elasticsearch-py` library: ```python from elasticsearch import Elasticsearch # ...
30.6. Elasticsearch 30.6.1. Connecting to Elasticsearch by Using Jest 30.6.2. Connecting to Elasticsearch by Using Spring Data 30.6.3. Spring Data Elasticsearch Repositories 30.7. Cassandra 30.7.1. ...
5.2. Search order for the configuration file 5.3. The configuration interface 'textconfig' 5.3.1. The start menu 5.3.2. The Bochs headerbar 5.3.3. The runtime configuration 5.4. Pre-defined CPU models...
06/08/2018: 6.8.0.4 - Fixed speedhack hotkey speed asignments and some commonalityscanner issues 06/09/2018: 6.8.0.5 - Fixed only when down speedhack option 06/10/2018: 6.8.0.6 - Fixed ultimap1 - ...
Simple, efficient and easy-to-use multiline text clamp react component. (supports reverse clamp) 简单、高效、易用的多行文本裁剪react组件。(支持反向裁剪) Encapsulation based on module 本组件基于模块...
[3043174] Docbook use of '_' build failure [3085140] Ia_arpl_Ew_Rw definition of error [3078995] ROL/ROR/SHL/SHR modeling wrong when dest reg is 32 bit [2864794] BX_INSTR_OPCODE in "cpu_loop" ...