Elasticsearch เช json rest api เชธเชพเชฅเซเชจเซเช เชธเชฐเซเช เชเชจเซเชเชฟเชจ เชเซ, เชเซเชฎเชพเช เชฒเซเชฏเซเชธเซเชจเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชเชพเชตเชพเชฎเชพเช เชฒเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชเชจเซเชเชฟเชจเชจเชพ เชคเชฎเชพเชฎ เชซเชพเชฏเชฆเชพเชเชจเซเช เชตเชฐเซเชฃเชจ เช
เชนเซเช เชเชชเชฒเชฌเซเชง เชเซ
เชฆเชธเซเชคเชพเชตเซเช เชกเซเชเชพเชฌเซเชเชฎเชพเช เชเชเชฟเชฒ เชถเซเชง เชฎเชพเชเซ เชธเชฎเชพเชจ เชเชจเซเชเชฟเชจเชจเซ เชเชชเชฏเซเช เชฅเชพเชฏ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชญเชพเชทเชพเชจเชพ เชฎเซเชฐเซเชซเซเชฒเซเชเซเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเชเชจเซ เชถเซเชง เชเชฐเซ เช เชฅเชตเชพ เชเซเช เชเซเชเชฐเซเชกเชฟเชจเซเชเซเชธ เชฆเซเชตเชพเชฐเชพ เชถเซเชง เชเชฐเซ.
เช เชฒเซเชเชฎเชพเช เชนเซเช เชเชจเซเชกเซเชเซเชธเซเชเช เชฌเซเชฒเซเช เชชเซเชธเซเชเชจเชพ เชเชฆเชพเชนเชฐเชฃเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ ES เชจเซ เชฎเซเชณเชญเซเชค เชฌเชพเชฌเชคเซ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซเชถ. เชนเซเช เชคเชฎเชจเซ เชฌเชคเชพเชตเซเชถ เชเซ เชฆเชธเซเชคเชพเชตเซเชเซ เชเซเชตเซ เชฐเซเชคเซ เชซเชฟเชฒเซเชเชฐ เชเชฐเชตเชพ, เชธเซเชฐเซเช เชเชฐเชตเชพ เช เชจเซ เชถเซเชงเชตเชพ.
เชเชชเชฐเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ เชชเชฐ เชจเชฟเชฐเซเชญเชฐ เชจ เชฐเชนเซเชตเชพ เชฎเชพเชเซ, เชนเซเช CURL เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ ES เชจเซ เชฌเชงเซ เชตเชฟเชจเชเชคเซเช เชเชฐเซเชถ. เชเซเชเชฒ เชเซเชฐเซเชฎ เชฎเชพเชเซ เชเช เชชเซเชฒเชเชเชจ เชชเชฃ เชเซ เชเซเชจเซ เชเชนเซเชตเชพเชฏ เชเซ
เชเซเชเซเชธเซเชเชฎเชพเช เชฆเชธเซเชคเชพเชตเซเชเซเชเชฐเชฃ เช
เชจเซ เช
เชจเซเชฏ เชธเซเชฐเซเชคเซเชจเซ เชฒเชฟเชเชเซเชธ เชเซ. เช
เชเชคเซ เชฆเชธเซเชคเชพเชตเซเชเซเชเชฐเชฃเชจเซ เชเชกเชชเซ เชเชเซเชธเซเชธ เชฎเชพเชเซ เชฒเชฟเชเชเซเชธ เชเซ. เช
เชเชพเชฃเซเชฏเชพ เชถเชฌเซเชฆเซเชจเซ เชตเซเชฏเชพเชเซเชฏเชพเช เชเชฎเชพเช เชฎเชณเซ เชถเชเซ เชเซ
ES เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชชเชฃเซ เชชเชนเซเชฒเชพ เชเชพเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช
ES เชตเชฟเชคเชฐเชฃ เช
เชนเซเช เชเชชเชฒเชฌเซเชง เชเซ bin/elasticsearch
. เชชเชฃ เชเชชเชฒเชฌเซเชง เชเซ
เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เช เชจเซ เชฒเซเชเช เชชเชเซ, เชเชพเชฒเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ เชคเชชเชพเชธเซเช:
# ะดะปั ัะดะพะฑััะฒะฐ ะทะฐะฟะพะผะฝะธะผ ะฐะดัะตั ะฒ ะฟะตัะตะผะตะฝะฝัั
#export ES_URL=$(docker-machine ip dev):9200
export ES_URL=localhost:9200
curl -X GET $ES_URL
เช เชฎเชจเซ เชเชจเชพ เชเซเชตเซเช เชเชเชเช เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ:
{
"name" : "Heimdall",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.2.1",
"build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",
"build_timestamp" : "2016-03-09T09:38:54Z",
"build_snapshot" : false,
"lucene_version" : "5.4.1"
},
"tagline" : "You Know, for Search"
}
เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ
เชเชพเชฒเซ ES เชฎเชพเช เชเช เชชเซเชธเซเช เชเชฎเซเชฐเซเช:
# ะะพะฑะฐะฒะธะผ ะดะพะบัะผะตะฝั c id 1 ัะธะฟะฐ post ะฒ ะธะฝะดะตะบั blog.
# ?pretty ัะบะฐะทัะฒะฐะตั, ััะพ ะฒัะฒะพะด ะดะพะปะถะตะฝ ะฑััั ัะตะปะพะฒะตะบะพ-ัะธัะฐะตะผัะผ.
curl -XPUT "$ES_URL/blog/post/1?pretty" -d'
{
"title": "ะะตัะตะปัะต ะบะพัััะฐ",
"content": "<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ะบะพััั<p>",
"tags": [
"ะบะพัััะฐ",
"ัะผะตัะฝะฐั ะธััะพัะธั"
],
"published_at": "2014-09-12T20:44:42+00:00"
}'
เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชญเชพเชต:
{
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : false
}
ES เชเชชเซเชเชช เชฌเชจเชพเชตเซเชฒ เชเซ
# ะะพะปััะธะผ mapping ะฒัะตั
ัะธะฟะพะฒ ะธะฝะดะตะบัะฐ blog
curl -XGET "$ES_URL/blog/_mapping?pretty"
เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆเชฎเชพเช, เชฎเซเช เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เช เชจเซเชเซเชฐเชฎเชฟเชค เชฆเชธเซเชคเชพเชตเซเชเชจเชพ เชเซเชทเซเชคเซเชฐเซเชจเชพ เชฎเซเชฒเซเชฏเซ เชเชฎเซเชฐเซเชฏเชพ เชเซ:
{
"blog" : {
"mappings" : {
"post" : {
"properties" : {
/* "content": "<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ะบะพััั<p>", */
"content" : {
"type" : "string"
},
/* "published_at": "2014-09-12T20:44:42+00:00" */
"published_at" : {
"type" : "date",
"format" : "strict_date_optional_time||epoch_millis"
},
/* "tags": ["ะบะพัััะฐ", "ัะผะตัะฝะฐั ะธััะพัะธั"] */
"tags" : {
"type" : "string"
},
/* "title": "ะะตัะตะปัะต ะบะพัััะฐ" */
"title" : {
"type" : "string"
}
}
}
}
}
}
เชคเซ เชจเซเชเชงเชตเซเช เชฏเซเชเซเชฏ เชเซ เชเซ ES เชเช เชฎเซเชฒเซเชฏ เช
เชจเซ เชฎเซเชฒเซเชฏเซเชจเซ เชถเซเชฐเซเชฃเซ เชตเชเซเชเซ เชคเชซเชพเชตเชค เชเชฐเชคเซเช เชจเชฅเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชถเซเชฐเซเชทเช เชซเซเชฒเซเชกเชฎเชพเช เชซเชเซเชค เชเช เชถเซเชฐเซเชทเช เชนเซเชฏ เชเซ, เช
เชจเซ เชเซ
เชเซเชธ เชซเซเชฒเซเชกเชฎเชพเช เชธเซเชเซเชฐเชฟเชเชเซเชธเชจเซ เชถเซเชฐเซเชฃเซ เชนเซเชฏ เชเซ, เชเซ เชเซ เชคเซ เชฎเซเชชเชฟเชเชเชฎเชพเช เชคเซ เช เชฐเซเชคเซ เชฐเชเซ เชฅเชพเชฏ เชเซ.
เช
เชฎเซ เชฎเซเชชเชฟเชเช เชตเชฟเชถเซ เชชเชเซเชฅเซ เชตเชงเซ เชตเชพเชค เชเชฐเซเชถเซเช.
เชตเชฟเชจเชเชคเซเช
เชคเซเชจเชพ id เชฆเซเชตเชพเชฐเชพ เชฆเชธเซเชคเชพเชตเซเช เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช:
# ะธะทะฒะปะตัะตะผ ะดะพะบัะผะตะฝั ั id 1 ัะธะฟะฐ post ะธะท ะธะฝะดะตะบัะฐ blog
curl -XGET "$ES_URL/blog/post/1?pretty"
{
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"title" : "ะะตัะตะปัะต ะบะพัััะฐ",
"content" : "<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ะบะพััั<p>",
"tags" : [ "ะบะพัััะฐ", "ัะผะตัะฝะฐั ะธััะพัะธั" ],
"published_at" : "2014-09-12T20:44:42+00:00"
}
}
เชชเซเชฐเชคเชฟเชญเชพเชตเชฎเชพเช เชจเชตเซ เชเซเช เชฆเซเชเชพเช: _version
ะธ _source
. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชธเชพเชฅเซ เชถเชฐเซ เชฅเชคเซ เชฌเชงเซ เชเซเช _
เชธเชคเซเชคเชพเชตเชพเชฐ เชคเชฐเซเชเซ เชตเชฐเซเชเซเชเซเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเซ _version
เชฆเชธเซเชคเชพเชตเซเช เชธเชเชธเซเชเชฐเชฃ เชฌเชคเชพเชตเซ เชเซ. เชเชถเชพเชตเชพเชฆเซ เชฒเซเชเซเชเช เชฎเชฟเชเซเชจเชฟเชเชฎ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซ เชเชฐเซเชฐเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เช
เชฎเซ เชธเชเชธเซเชเชฐเชฃ 1 เชงเชฐเชพเชตเชคเชพ เชฆเชธเซเชคเชพเชตเซเชเชจเซ เชฌเชฆเชฒเชตเชพ เชฎเชพเชเชเซเช เชเซเช. เช
เชฎเซ เชฌเชฆเชฒเชพเชฏเซเชฒ เชฆเชธเซเชคเชพเชตเซเช เชธเชฌเชฎเชฟเช เชเชฐเซเช เชเซเช เช
เชจเซ เชธเซเชเชตเซเช เชเซเช เชเซ เช เชธเชเชธเซเชเชฐเชฃ 1 เชธเชพเชฅเซเชจเชพ เชฆเชธเซเชคเชพเชตเซเชเชจเซเช เชธเชเชชเชพเชฆเชจ เชเซ. เชเซ เชเซเช เช
เชจเซเชฏ เชตเซเชฏเชเซเชคเชฟเช เชชเชฃ เชธเชเชธเซเชเชฐเชฃ 1 เชธเชพเชฅเซ เชฆเชธเซเชคเชพเชตเซเชเชจเซ เชธเชเชชเชพเชฆเชฟเชค เชเชฐเซเชฏเซ เชนเซเชฏ เช
เชจเซ เช
เชฎเชพเชฐเซ เชธเชฎเชเซเชท เชซเซเชฐเชซเชพเชฐเซ เชธเชฌเชฎเชฟเช เชเชฐเซเชฏเชพ เชนเซเชฏ, เชคเซ เชชเชเซ ES เช
เชฎเชพเชฐเชพ เชซเซเชฐเชซเชพเชฐเซ เชธเซเชตเซเชเชพเชฐเชถเซ เชจเชนเซเช, เชเชพเชฐเชฃ เชเซ เชคเซ เชฆเชธเซเชคเชพเชตเซเชเชจเซ เชธเชเชธเซเชเชฐเชฃ 2 เชธเชพเชฅเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ.
เชเซ _source
เช
เชฎเซ เช
เชจเซเชเซเชฐเชฎเชฟเชค เชเชฐเซเชฒ เชฆเชธเซเชคเชพเชตเซเช เชธเชฎเชพเชตเซ เชเซ. ES เชถเซเชง เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เช เชฎเซเชฒเซเชฏเชจเซ เชเชชเชฏเซเช เชเชฐเชคเซเช เชจเชฅเซ เชเชพเชฐเชฃ เชเซ เช
เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพเชเชจเซ เชเชชเชฏเซเช เชถเซเชง เชฎเชพเชเซ เชฅเชพเชฏ เชเซ. เชเชเซเชฏเชพ เชฌเชเชพเชตเชตเชพ เชฎเชพเชเซ, ES เชธเชเชเซเชเชฟเชค เชธเซเชคเซเชฐเซเชค เชฆเชธเซเชคเชพเชตเซเช เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ. เชเซ เช
เชฎเชจเซ เชซเชเซเชค เชเชเชกเซเชจเซ เชเชฐเซเชฐ เชนเซเชฏ, เช
เชจเซ เชธเชฎเชเซเชฐ เชธเซเชฐเซเชค เชฆเชธเซเชคเชพเชตเซเชเชจเซ เชจเชนเซเช, เชคเซ เช
เชฎเซ เชธเซเชฐเซเชค เชธเชเชเซเชฐเชนเชจเซ เช
เชเซเชทเชฎ เชเชฐเซ เชถเชเซเช เชเซเช.
เชเซ เช เชฎเชจเซ เชตเชงเชพเชฐเชพเชจเซ เชฎเชพเชนเชฟเชคเซเชจเซ เชเชฐเซเชฐ เชจ เชนเซเชฏ, เชคเซ เช เชฎเซ เชซเชเซเชค _source เชจเซ เชธเชพเชฎเชเซเชฐเซ เชฎเซเชณเชตเซ เชถเชเซเช เชเซเช:
curl -XGET "$ES_URL/blog/post/1/_source?pretty"
{
"title" : "ะะตัะตะปัะต ะบะพัััะฐ",
"content" : "<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ะบะพััั<p>",
"tags" : [ "ะบะพัััะฐ", "ัะผะตัะฝะฐั ะธััะพัะธั" ],
"published_at" : "2014-09-12T20:44:42+00:00"
}
เชคเชฎเซ เชฎเชพเชคเซเชฐ เช เชฎเซเช เชซเซเชฒเซเชกเซเชธ เชชเชฃ เชชเชธเชเชฆ เชเชฐเซ เชถเชเซ เชเซ:
# ะธะทะฒะปะตัะตะผ ัะพะปัะบะพ ะฟะพะปะต title
curl -XGET "$ES_URL/blog/post/1?_source=title&pretty"
{
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"title" : "ะะตัะตะปัะต ะบะพัััะฐ"
}
}
เชเชพเชฒเซ เชฅเซเชกเซ เชตเชงเซ เชชเซเชธเซเชเชจเซ เช เชจเซเชเซเชฐเชฎเชฟเชค เชเชฐเซเช เช เชจเซ เชตเชงเซ เชเชเชฟเชฒ เชชเซเชฐเชถเซเชจเซ เชเชฒเชพเชตเซเช.
curl -XPUT "$ES_URL/blog/post/2" -d'
{
"title": "ะะตัะตะปัะต ัะตะฝะบะธ",
"content": "<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ัะตะฝะบะพะฒ<p>",
"tags": [
"ัะตะฝะบะธ",
"ัะผะตัะฝะฐั ะธััะพัะธั"
],
"published_at": "2014-08-12T20:44:42+00:00"
}'
curl -XPUT "$ES_URL/blog/post/3" -d'
{
"title": "ะะฐะบ ั ะผะตะฝั ะฟะพัะฒะธะปัั ะบะพัะตะฝะพะบ",
"content": "<p>ะััะตัะฐะทะดะธัะฐััะฐั ะธััะพัะธั ะฟัะพ ะฑะตะดะฝะพะณะพ ะบะพัะตะฝะบะฐ ั ัะปะธัั<p>",
"tags": [
"ะบะพัััะฐ"
],
"published_at": "2014-07-21T20:44:42+00:00"
}'
เชธortเชฐเซเชเชฟเชเช
# ะฝะฐะนะดะตะผ ะฟะพัะปะตะดะฝะธะน ะฟะพัั ะฟะพ ะดะฐัะต ะฟัะฑะปะธะบะฐัะธะธ ะธ ะธะทะฒะปะตัะตะผ ะฟะพะปั title ะธ published_at
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
"size": 1,
"_source": ["title", "published_at"],
"sort": [{"published_at": "desc"}]
}'
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : null,
"hits" : [ {
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_score" : null,
"_source" : {
"title" : "ะะตัะตะปัะต ะบะพัััะฐ",
"published_at" : "2014-09-12T20:44:42+00:00"
},
"sort" : [ 1410554682000 ]
} ]
}
}
เช
เชฎเซ เชเซเชฒเซเชฒเซ เชชเซเชธเซเช เชชเชธเชเชฆ เชเชฐเซ. size
เชเชพเชฐเซ เชเชฐเชตเชพเชจเชพ เชฆเชธเซเชคเชพเชตเซเชเซเชจเซ เชธเชเชเซเชฏเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชเชฐเซ เชเซ. total
เชตเชฟเชจเชเชคเซ เชธเชพเชฅเซ เชฎเซเชณ เชเชพเชคเชพ เชฆเชธเซเชคเชพเชตเซเชเซเชจเซ เชเซเชฒ เชธเชเชเซเชฏเชพ เชฆเชฐเซเชถเชพเชตเซ เชเซ. sort
เชเชเชเชชเซเชเชฎเชพเช เชชเซเชฐเซเชฃเชพเชเชเซเชจเซ เชถเซเชฐเซเชฃเซ เชนเซเชฏ เชเซ เชเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชเซเชเชฐเชฃ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชคเซ. เชคเชพเชฐเซเชเชจเซ เชชเซเชฐเซเชฃเชพเชเชเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ. เชธเซเชฐเซเช เชเชฐเชตเชพ เชตเชฟเชถเซ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ เชเชฎเชพเช เชฎเชณเซ เชถเชเซ เชเซ
เชซเชฟเชฒเซเชเชฐเซเชธ เช เชจเซ เชชเซเชฐเชถเซเชจเซ
เชเชตเซเชคเซเชคเชฟ 2 เชฅเซ ES, เชคเซเชจเชพ เชฌเชฆเชฒเซ, เชซเชฟเชฒเซเชเชฐ เช
เชจเซ เชเซเชตเซเชฐเซ เชตเชเซเชเซ เชญเซเชฆ เชชเชพเชกเชคเซเช เชจเชฅเซ
เชเซเชตเซเชฐเซ เชธเชเชฆเชฐเซเชญ เชซเชฟเชฒเซเชเชฐ เชธเชเชฆเชฐเซเชญเชฅเซ เช
เชฒเช เชชเชกเซ เชเซ เชเซเชฎเชพเช เชเซเชตเซเชฐเซ _score เชเชจเชฐเซเช เชเชฐเซ เชเซ เช
เชจเซ เชเซเชถเซเชก เชจเชฅเซ. เชนเซเช เชคเชฎเชจเซ เชชเชเซเชฅเซ เชฌเชคเชพเชตเซเชถ เชเซ _เชธเซเชเซเชฐ เชถเซเช เชเซ.
เชคเชพเชฐเซเช เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชเชฐ เชเชฐเซ
เช
เชฎเซ เชตเชฟเชจเชเชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
# ะฟะพะปััะธะผ ะฟะพััั, ะพะฟัะฑะปะธะบะพะฒะฐะฝะฝัะต 1ะพะณะพ ัะตะฝััะฑัั ะธะปะธ ะฟะพะทะถะต
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
"filter": {
"range": {
"published_at": { "gte": "2014-09-01" }
}
}
}'
เชเซ เชเซเชธ เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชเชฐ เชเชฐเซ
เช
เชฎเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
# ะฝะฐะนะดะตะผ ะฒัะต ะดะพะบัะผะตะฝัั, ะฒ ะฟะพะปะต tags ะบะพัะพััั
ะตััั ัะปะตะผะตะฝั 'ะบะพัััะฐ'
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
"_source": [
"title",
"tags"
],
"filter": {
"term": {
"tags": "ะบะพัััะฐ"
}
}
}'
{
"took" : 9,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"title" : "ะะตัะตะปัะต ะบะพัััะฐ",
"tags" : [ "ะบะพัััะฐ", "ัะผะตัะฝะฐั ะธััะพัะธั" ]
}
}, {
"_index" : "blog",
"_type" : "post",
"_id" : "3",
"_score" : 1.0,
"_source" : {
"title" : "ะะฐะบ ั ะผะตะฝั ะฟะพัะฒะธะปัั ะบะพัะตะฝะพะบ",
"tags" : [ "ะบะพัััะฐ" ]
}
} ]
}
}
เชธเชเชชเซเชฐเซเชฃ เชเซเชเซเชธเซเช เชถเซเชง
เช เชฎเชพเชฐเชพ เชคเซเชฐเชฃ เชฆเชธเซเชคเชพเชตเซเชเซเชฎเชพเช เชธเชพเชฎเชเซเชฐเซ เชเซเชทเซเชคเซเชฐเชฎเชพเช เชจเซเชเซเชจเชพเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ:
<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ะบะพััั<p>
<p>ะกะผะตัะฝะฐั ะธััะพัะธั ะฟัะพ ัะตะฝะบะพะฒ<p>
<p>ะััะตัะฐะทะดะธัะฐััะฐั ะธััะพัะธั ะฟัะพ ะฑะตะดะฝะพะณะพ ะบะพัะตะฝะบะฐ ั ัะปะธัั<p>
เช
เชฎเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
# source: false ะพะทะฝะฐัะฐะตั, ััะพ ะฝะต ะฝัะถะฝะพ ะธะทะฒะปะตะบะฐัั _source ะฝะฐะนะดะตะฝะฝัั
ะดะพะบัะผะตะฝัะพะฒ
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
"_source": false,
"query": {
"match": {
"content": "ะธััะพัะธั"
}
}
}'
{
"took" : 13,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : 0.11506981,
"hits" : [ {
"_index" : "blog",
"_type" : "post",
"_id" : "2",
"_score" : 0.11506981
}, {
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_score" : 0.11506981
}, {
"_index" : "blog",
"_type" : "post",
"_id" : "3",
"_score" : 0.095891505
} ]
}
}
เชเซ เชเซ, เชเซ เชเชชเชฃเซ เชธเชพเชฎเชเซเชฐเซ เชเซเชทเซเชคเซเชฐเชฎเชพเช "เชตเชพเชฐเซเชคเชพเช" เชถเซเชงเซเชถเซเช, เชคเซ เช เชฎเชจเซ เชเชเชเชชเชฃ เชฎเชณเชถเซ เชจเชนเซเช, เชเชพเชฐเชฃ เชเซ เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพเชฎเชพเช เชซเชเซเชค เชฎเซเชณ เชถเชฌเซเชฆเซ เชเซ, เชคเซเชฎเชจเชพ เชฆเชพเชเชกเซ เชจเชฅเซ. เชเชเซเช-เชเซเชฃเชตเชคเซเชคเชพเชจเซ เชถเซเชง เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชตเชฟเชถเซเชฒเซเชทเชเชจเซ เชเซเช เชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชเซเชทเซเชคเซเชฐ _score
เชฌเชคเชพเชตเซ เชเซ
เชตเชฟเชถเซเชฒเซเชทเชเซ
เชตเชฟเชถเซเชฒเซเชทเชเซเชฎเชพเช เชเช เชนเซเชฏ เชเซ
ES เชชเชพเชธเซ เช
เชจเซเช เชเซ
เชเชพเชฒเซ เชฒเชพเชญ เชฒเชเช
# ะธัะฟะพะปัะทัะตะผ ะฐะฝะฐะปะธะทะฐัะพั standard
# ะพะฑัะทะฐัะตะปัะฝะพ ะฝัะถะฝะพ ะฟะตัะตะบะพะดะธัะพะฒะฐัั ะฝะต ASCII ัะธะผะฒะพะปั
curl -XGET "$ES_URL/_analyze?pretty&analyzer=standard&text=%D0%92%D0%B5%D1%81%D0%B5%D0%BB%D1%8B%D0%B5%20%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%20%D0%BA%D0%BE%D1%82%D1%8F%D1%82"
{
"tokens" : [ {
"token" : "ะฒะตัะตะปัะต",
"start_offset" : 0,
"end_offset" : 7,
"type" : "<ALPHANUM>",
"position" : 0
}, {
"token" : "ะธััะพัะธะธ",
"start_offset" : 8,
"end_offset" : 15,
"type" : "<ALPHANUM>",
"position" : 1
}, {
"token" : "ะฟัะพ",
"start_offset" : 16,
"end_offset" : 19,
"type" : "<ALPHANUM>",
"position" : 2
}, {
"token" : "ะบะพััั",
"start_offset" : 20,
"end_offset" : 25,
"type" : "<ALPHANUM>",
"position" : 3
} ]
}
# ะธัะฟะพะปัะทัะตะผ ะฐะฝะฐะปะธะทะฐัะพั russian
curl -XGET "$ES_URL/_analyze?pretty&analyzer=russian&text=%D0%92%D0%B5%D1%81%D0%B5%D0%BB%D1%8B%D0%B5%20%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%20%D0%BA%D0%BE%D1%82%D1%8F%D1%82"
{
"tokens" : [ {
"token" : "ะฒะตัะตะป",
"start_offset" : 0,
"end_offset" : 7,
"type" : "<ALPHANUM>",
"position" : 0
}, {
"token" : "ะธััะพั",
"start_offset" : 8,
"end_offset" : 15,
"type" : "<ALPHANUM>",
"position" : 1
}, {
"token" : "ะบะพั",
"start_offset" : 20,
"end_offset" : 25,
"type" : "<ALPHANUM>",
"position" : 3
} ]
}
เชธเซเชเชพเชจเซเชกเชฐเซเชก เชตเชฟเชถเซเชฒเซเชทเชเซ เชธเซเชเซเชฐเชฟเชเชเชจเซ เชเชเซเชฏเชพเชเชฎเชพเช เชตเชฟเชญเชพเชเซเชค เชเชฐเซ เช เชจเซ เชฆเชฐเซเช เชตเชธเซเชคเซเชจเซ เชฒเซเช เชฐเชเซเชธเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเซ, เชฐเชถเชฟเชฏเชจ เชตเชฟเชถเซเชฒเซเชทเชเซ เชฌเชฟเชจเชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชถเชฌเซเชฆเซ เชฆเซเชฐ เชเชฐเซเชฏเชพ, เชคเซเชจเซ เชฒเซเช เชฐเชเซเชธเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเซเชฏเชพ เช เชจเซ เชถเชฌเซเชฆเซเชจเชพ เชธเซเชเซเชฎเชจเซ เชเซเชกเซ เชฆเซเชงเชพ.
เชเชพเชฒเซ เชเซเชเช เชเซ เชฐเชถเชฟเชฏเชจ เชตเชฟเชถเซเชฒเซเชทเช เชเชฏเชพ เชเซเชเชจเชพเชเชเชฐ, เชเซเชเชจเชซเชฟเชฒเซเชเชฐเซเชธ, เชเชพเชฐเชซเชฟเชฒเซเชเชฐเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ:
{
"filter": {
"russian_stop": {
"type": "stop",
"stopwords": "_russian_"
},
"russian_keywords": {
"type": "keyword_marker",
"keywords": []
},
"russian_stemmer": {
"type": "stemmer",
"language": "russian"
}
},
"analyzer": {
"russian": {
"tokenizer": "standard",
/* TokenFilters */
"filter": [
"lowercase",
"russian_stop",
"russian_keywords",
"russian_stemmer"
]
/* CharFilters ะพััััััะฒััั */
}
}
}
เชเชพเชฒเซ เชฐเชถเชฟเชฏเชจ เชชเชฐ เชเชงเชพเชฐเชฟเชค เช เชฎเชพเชฐเชพ เชตเชฟเชถเซเชฒเซเชทเชเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเซเช, เชเซ HTML เชเซ เชเซเชธเชจเซ เชเชพเชชเซ เชจเชพเชเชถเซ. เชเชพเชฒเซ เชคเซเชจเซ เชกเชฟเชซเซเชฒเซเช เชเชนเซเช, เชเชพเชฐเชฃ เชเซ เช เชจเชพเชฎ เชธเชพเชฅเซ เชตเชฟเชถเซเชฒเซเชทเช เชฎเซเชณเชญเซเชค เชฐเซเชคเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชถเซ.
{
"filter": {
"ru_stop": {
"type": "stop",
"stopwords": "_russian_"
},
"ru_stemmer": {
"type": "stemmer",
"language": "russian"
}
},
"analyzer": {
"default": {
/* ะดะพะฑะฐะฒะปัะตะผ ัะดะฐะปะตะฝะธะต html ัะตะณะพะฒ */
"char_filter": ["html_strip"],
"tokenizer": "standard",
"filter": [
"lowercase",
"ru_stop",
"ru_stemmer"
]
}
}
}
เชธเซเชชเซเชฐเชฅเชฎ, เชคเชฎเชพเชฎ HTML เชเซ เชเซเชธ เชธเซเชฐเซเชค เชธเซเชเซเชฐเชฟเชเชเชฎเชพเชเชฅเซ เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ, เชชเชเซ เชเซเชเชจเชพเชเชเชฐ เชธเซเชเชพเชจเซเชกเชฐเซเชก เชคเซเชจเซ เชเซเชเชจเซเชธเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชถเซ, เชชเชฐเชฟเชฃเชพเชฎเซ เชเซเชเชจเซเชธ เชฒเซเช เชฐเชเซเชธเชฎเชพเช เชเชถเซ, เชจเชเซเชตเชพ เชถเชฌเซเชฆเซ เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ, เช เชจเซ เชฌเชพเชเซเชจเชพ เชเซเชเชจเซเชธ เชถเชฌเซเชฆเชจเชพ เชธเซเชเซเชฎ เชคเชฐเซเชเซ เชฐเชนเซเชถเซ.
เชเชจเซเชกเซเชเซเชธ เชฌเชจเชพเชตเซ เชฐเชนเซเชฏเชพ เชเซเช
เชเชชเชฐ เช เชฎเซ เชกเชฟเชซเซเชฒเซเช เชตเชฟเชถเซเชฒเซเชทเชเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเซเชฏเซเช เชเซ. เชคเซ เชคเชฎเชพเชฎ เชธเซเชเซเชฐเชฟเชเช เชซเซเชฒเซเชกเซเชธ เชชเชฐ เชฒเชพเชเซ เชฅเชถเซ. เช เชฎเชพเชฐเซ เชชเซเชธเซเชเชฎเชพเช เชเซ เชเซเชธเชจเซ เชถเซเชฐเซเชฃเซ เชเซ, เชคเซเชฅเซ เชตเชฟเชถเซเชฒเซเชทเช เชฆเซเชตเชพเชฐเชพ เชเซ เชเซเชธ เชชเชฐ เชชเชฃ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. เชเชพเชฐเชฃ เชเซ เช เชฎเซ เชเซ เช เชธเชพเชฅเซ เชเซเชเซเชเชธ เชฎเซเช เชเชฐเซเชจเซ เชชเซเชธเซเชเซเชธ เชถเซเชงเซ เชฐเชนเซเชฏเชพ เชเซเช, เชชเชเซ เช เชฎเชพเชฐเซ เชเซ เช เชซเซเชฒเซเชก เชฎเชพเชเซ เชตเชฟเชถเซเชฒเซเชทเชฃเชจเซ เช เชเซเชทเชฎ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชเชพเชฒเซ เชตเชฟเชถเซเชฒเซเชทเช เช เชจเซ เชฎเซเชชเชฟเชเช เชธเชพเชฅเซ เชเชจเซเชกเซเชเซเชธ เชฌเซเชฒเซเช2 เชฌเชจเชพเชตเซเช, เชเซเชฎเชพเช เชเซ เชเซเชธ เชซเซเชฒเซเชกเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ เช เชเซเชทเชฎ เชเซ:
curl -XPOST "$ES_URL/blog2" -d'
{
"settings": {
"analysis": {
"filter": {
"ru_stop": {
"type": "stop",
"stopwords": "_russian_"
},
"ru_stemmer": {
"type": "stemmer",
"language": "russian"
}
},
"analyzer": {
"default": {
"char_filter": [
"html_strip"
],
"tokenizer": "standard",
"filter": [
"lowercase",
"ru_stop",
"ru_stemmer"
]
}
}
}
},
"mappings": {
"post": {
"properties": {
"content": {
"type": "string"
},
"published_at": {
"type": "date"
},
"tags": {
"type": "string",
"index": "not_analyzed"
},
"title": {
"type": "string"
}
}
}
}
}'
เชเชพเชฒเซ เช เชเชจเซเชกเซเชเซเชธ (เชฌเซเชฒเซเช3) เชฎเชพเช เชธเชฎเชพเชจ 2 เชชเซเชธเซเช เชเชฎเซเชฐเซเช. เชนเซเช เช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชเซเชกเซ เชฆเชเชถ เชเชพเชฐเชฃ เชเซ... เชคเซ เชฌเซเชฒเซเช เชเชจเซเชกเซเชเซเชธเชฎเชพเช เชฆเชธเซเชคเชพเชตเซเชเซ เชเชฎเซเชฐเชตเชพ เชธเชฎเชพเชจ เชเซ.
เช เชญเชฟเชตเซเชฏเชเซเชคเชฟ เชธเชฎเชฐเซเชฅเชจ เชธเชพเชฅเซ เชธเชเชชเซเชฐเซเชฃ เชเซเชเซเชธเซเช เชถเซเชง
เชเชพเชฒเซ เชฌเซเชเชพ เชชเซเชฐเชเชพเชฐเชจเซ เชตเชฟเชจเชเชคเซ เชชเชฐ เชเช เชจเชเชฐ เชเชฐเซเช:
# ะฝะฐะนะดะตะผ ะดะพะบัะผะตะฝัั, ะฒ ะบะพัะพััั
ะฒัััะตัะฐะตััั ัะปะพะฒะพ 'ะธััะพัะธะธ'
# query -> simple_query_string -> query ัะพะดะตัะถะธั ะฟะพะธัะบะพะฒัะน ะทะฐะฟัะพั
# ะฟะพะปะต title ะธะผะตะตั ะฟัะธะพัะธัะตั 3
# ะฟะพะปะต tags ะธะผะตะตั ะฟัะธะพัะธัะตั 2
# ะฟะพะปะต content ะธะผะตะตั ะฟัะธะพัะธัะตั 1
# ะฟัะธะพัะธัะตั ะธัะฟะพะปัะทัะตััั ะฟัะธ ัะฐะฝะถะธัะพะฒะฐะฝะธะธ ัะตะทัะปััะฐัะพะฒ
curl -XPOST "$ES_URL/blog2/post/_search?pretty" -d'
{
"query": {
"simple_query_string": {
"query": "ะธััะพัะธะธ",
"fields": [
"title^3",
"tags^2",
"content"
]
}
}
}'
เชเชพเชฐเชฃ เชเซ เช เชฎเซ เชฐเชถเชฟเชฏเชจ เชธเซเชเซเชฎเชฟเชเช เชธเชพเชฅเซ เชตเชฟเชถเซเชฒเซเชทเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช, เชชเชเซ เช เชตเชฟเชจเชเชคเซ เชฌเชงเชพ เชฆเชธเซเชคเชพเชตเซเชเซ เชชเชฐเชค เชเชฐเชถเซ, เชเซ เชเซ เชคเซเชฎเชพเช เชซเชเซเชค 'เชเชคเชฟเชนเชพเชธ' เชถเชฌเซเชฆ เชเซ.
เชตเชฟเชจเชเชคเซเชฎเชพเช เชตเชฟเชถเชฟเชทเซเช เช เชเซเชทเชฐเซ เชนเซเช เชถเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ:
""fried eggs" +(eggplant | potato) -frittata"
เชตเชฟเชจเชเชคเซ เชตเชพเชเซเชฏเชฐเชเชจเชพ:
+ signifies AND operation
| signifies OR operation
- negates a single token
" wraps a number of tokens to signify a phrase for searching
* at the end of a term signifies a prefix query
( and ) signify precedence
~N after a word signifies edit distance (fuzziness)
~N after a phrase signifies slop amount
# ะฝะฐะนะดะตะผ ะดะพะบัะผะตะฝัั ะฑะตะท ัะปะพะฒะฐ 'ัะตะฝะบะธ'
curl -XPOST "$ES_URL/blog2/post/_search?pretty" -d'
{
"query": {
"simple_query_string": {
"query": "-ัะตะฝะบะธ",
"fields": [
"title^3",
"tags^2",
"content"
]
}
}
}'
# ะฟะพะปััะธะผ 2 ะฟะพััะฐ ะฟัะพ ะบะพัะธะบะพะฒ
เชธเชเชฆเชฐเซเชญเซ
Elastic.co เชธเชเชฆเชฐเซเชญ เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชจ เชถเชฌเซเชฆเชพเชตเชฒเชฟ เชธเซเชฅเชพเชชเชจ เชฆเชธเซเชคเชพเชตเซเชเชจเซ เชนเซเชฐเชซเซเชฐ เชเชจเซเชกเซเชเซเชธ เชเชชเชฐเซเชถเชจเซเชธ เชตเชฟเชจเชเชคเซเชเชจเซ เชธเซเชเชฟ
PS
เชเซ เชคเชฎเชจเซ เชธเชฎเชพเชจ เชฒเซเชเซ-เชชเชพเช เชฎเชพเช เชฐเซเชเชฟ เชนเซเชฏ, เชจเชตเชพ เชฒเซเชเซ เชฎเชพเชเซเชจเชพ เชตเชฟเชเชพเชฐเซ เชนเซเชฏ, เช เชฅเชตเชพ เชธเชนเชเชพเชฐ เชฎเชพเชเซเชจเซ เชฆเชฐเชเชพเชธเซเชคเซ เชนเซเชฏ, เชคเซ เชฎเชจเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชธเชเชฆเซเชถเชฎเชพเช เช เชฅเชตเชพ เชเชฎเซเชเชฒ เชฆเซเชตเชพเชฐเชพ เชธเชเชฆเซเชถ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพเชฎเชพเช เชเชจเชเชฆ เชฅเชถเซ. [เชเชฎเซเชเชฒ เชธเซเชฐเชเซเชทเชฟเชค].
เชธเซเชฐเซเชธ: www.habr.com