Elasticsearch เปเบกเปเบเปเบเบทเปเบญเบเบเบฑเบเบเบญเบเบซเบฒเบเบตเปเบกเบต json rest api, เปเบเป Lucene เปเบฅเบฐเบเบฝเบเปเบ Java. เบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบเบงเบฒเบกเปเบเปเบเบฝเบเบเบฑเบเบซเบกเบปเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเปเบกเปเบเบกเบตเบขเบนเป
เปเบเบทเปเบญเบเบเบฑเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเปเบกเปเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเปเบเบซเบฒเบเบตเปเบชเบฑเบเบชเบปเบเปเบเบเบฒเบเบเปเปเบกเบนเบเปเบญเบเบฐเบชเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบปเปเบเบซเบฒเบเปเบฒเบเบถเบเปเบเบดเบ morphology เบเบญเบเบเบฒเบชเบฒเบซเบผเบทเบเบปเปเบเบซเบฒเปเบเบเบเบดเบเบฑเบเบเบฒเบเบเบนเบกเบชเบฒเบ.
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบญเบเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบทเปเบเบเบฒเบเบเบญเบ ES เปเบเบเปเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบเบฑเบเบชเบฐเบเบตเบเบปเบเบเบงเบฒเบก blog. เบเปเบญเบเบเบฐเบชเบฐเปเบเบเบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเบญเบ, เบเบฑเบเบฎเบฝเบ เปเบฅเบฐเบเบญเบเบซเบฒเปเบญเบเบฐเบชเบฒเบ.
เปเบเบทเปเบญเบเปเปเปเบซเปเบเบถเปเบเบเบฑเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ, เบเปเบญเบเบเบฐเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฑเบเบซเบกเบปเบเปเบเบซเบฒ ES เปเบเบเปเบเป CURL. เบเบญเบเบเบฒเบเบเบตเปเบเบฑเบเบกเบต plugin เบชเปเบฒเบฅเบฑเบ google chrome เบเบตเปเปเบญเบตเปเบเบงเปเบฒ
เบเปเปเบเบงเบฒเบกเบกเบตเบฅเบดเปเบเปเบเบซเบฒเปเบญเบเบฐเบชเบฒเบ เปเบฅเบฐเปเบซเบผเปเบเบญเบทเปเบเป. เปเบเบเบญเบเบเปเบฒเบเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบงเบเบฑเบเปเบญเบเบฐเบชเบฒเบ. เบเปเบฒเบเบดเบเบฒเบกเบเบญเบเบเปเบฒเบชเบฑเบเบเบตเปเบเปเปเบเบธเปเบเปเบเบตเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบ
เบเบฒเบเบเบดเบเบเบฑเปเบ ES
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบญเบดเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ Java. เบเบฑเบเบเบฑเบเบเบฐเบเบฒ
เบเบฒเบเปเบเบเบขเบฒเบ 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 เบเปเปเปเบเปเปเบเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบเปเบฒเบเบฝเบงเปเบฅเบฐ array เบเบญเบเบเปเบฒ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบชเบฐเบซเบเบฒเบกเบซเบปเบงเบเปเปเบเบฝเบเปเบเปเบเบฐเบเบญเบเบเปเบงเบเบซเบปเบงเบเปเป, เปเบฅเบฐเบเบฒเบเบชเบฐเบซเบเบฒเบก tags เบกเบต array เบเบญเบ strings, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบงเบเบกเบฑเบเบเบฐเบเบทเบเบชเบฐเปเบเบเปเบเปเบเบเบเบฝเบงเบเบฑเบเปเบเปเบเบเบเบตเป.
เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบงเบปเปเบฒเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเบตเปเปเบเบเบฒเบเบซเบผเบฑเบ.
เบเบฒเบเบฎเปเบญเบเบเป
เบเบถเบเปเบญเบปเบฒเปเบญเบเบฐเบชเบฒเบเปเบเบ 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
. เปเบเบเบเบปเปเบงเปเบ, เบเบตเบเบฑเบเบซเบกเบปเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ _
เบเบทเบเบเบฑเบเบเบฐเปเบเบเปเบเบฑเบเบเบฒเบเบเบฒเบ.
Key _version
เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบชเบฐเบเบฑเบเปเบญเบเบฐเบชเบฒเบ. เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบปเบเปเบเบเบฒเบเบฅเบฑเบญเบเปเบเปเบเปเบเบตเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบ. เบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเปเบฝเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเบกเบตเบชเบฐเบเบฑเบ 1. เบเบงเบเปเบฎเบปเบฒเบชเบปเปเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเปเบฅเบฐเบเบตเปเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเปเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเบกเบตเบชเบฐเบเบฑเบ 1. เบเปเบฒเบเบปเบเบญเบทเปเบเปเบเปเปเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเบกเบตเบชเบฐเบเบฑเบ 1 เปเบฅเบฐเบชเบปเปเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบญเบเบเบงเบเปเบฎเบปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ. ES เบเบฐเบเปเปเบเบญเบกเบฎเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเบฒเบฐเบงเปเบฒ เบกเบฑเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบญเบเบฐเบชเบฒเบเบเบตเปเบกเบตเบชเบฐเบเบฑเบ 2.
Key _source
เบกเบตเปเบญเบเบฐเบชเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบชเบฐเบเบต. ES เบเปเปเปเบเปเปเบเปเบเปเบฒเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบปเปเบเบซเบฒเปเบเบฒเบฐเบงเปเบฒ เบเบฑเบเบเบฐเบเบตเปเบกเปเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบญเบเบซเบฒ. เปเบเบทเปเบญเบเบฐเบซเบเบฑเบเบเบทเปเบเบเบตเป, ES เปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบญเบเบฐเบชเบฒเบเปเบซเบผเปเบเบเบตเปเบเบตเบเบญเบฑเบ. เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบฝเบเปเบเป id, เปเบฅเบฐเบเปเปเปเบกเปเบเปเบญเบเบฐเบชเบฒเบเปเบซเบผเปเบเบเบฑเบเบซเบกเบปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบดเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบซเบผเปเบ.
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบก, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฝเบเปเบเปเปเบเบทเปเบญเปเบเบเบญเบ _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"
}'
เบเบฒเบเบฎเบฝเบเบฅเปเบฒเบเบฑเบ
# ะฝะฐะนะดะตะผ ะฟะพัะปะตะดะฝะธะน ะฟะพัั ะฟะพ ะดะฐัะต ะฟัะฑะปะธะบะฐัะธะธ ะธ ะธะทะฒะปะตัะตะผ ะฟะพะปั 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
เปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฐเบเบญเบเบกเบต array เบเบญเบเบเปเบฒเบเบงเบเปเบเบฑเบกเบเบตเปเบเบฒเบเบเบฑเบเบฅเบฝเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบ. เปเบซเบผเบปเปเบฒเบเบฑเปเบ. เบงเบฑเบเบเบตเปเบเปเบเบทเบเบเปเบฝเบเปเบเบฑเบเบเปเบฒเบเบงเบเปเบเบฑเบก. เบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบฎเบฝเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบ
เบเบฒเบเบเบฑเปเบเบเบญเบเปเบฅเบฐเบเบฒเบเบชเบญเบเบเบฒเบก
ES เบเบฑเบเบเบฑเปเบเปเบเปเบฎเบธเปเบ 2 เบเปเปเปเบเปเบเปเบฒเปเบเบเบฅเบฐเบซเบงเปเบฒเบเบเบปเบงเบเบญเบเปเบฅเบฐเบเบฒเบเบชเบญเบเบเบฒเบก, เปเบเบเบเบตเปเบเบฐ
เบเปเบฅเบดเบเบปเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบเบเปเบฒเบเบเบฒเบเบเปเบฅเบดเบเบปเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบตเป query เบชเปเบฒเบ _score เปเบฅเบฐเบเปเปเปเบเปเบเบทเบเปเบเบฑเบเปเบงเป. เบเปเบญเบเบเบฐเบชเบฐเปเบเบเปเบซเปเปเบเบปเปเบฒเบฎเบนเปเบงเปเบฒ _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
} ]
}
เบเบฒเบเบงเบดเปเบเบฒเบฐเบกเบฒเบเบเบฐเบเบฒเบเปเบเปเปเบเปเบเบชเบฒเบเปเบเบเบเปเบญเบเบซเบงเปเบฒเบเปเบฅเบฐเบเปเบฝเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเบฑเบเบเบปเบงเบเบดเบกเบเปเบญเบ, เบเบฑเบเบงเบดเปเบเบฒเบฐเบเบฒเบชเบฒเบฅเบฑเบเปเบเบเปเบเปเปเบญเบปเบฒเบเปเบฒเบเบตเปเบเปเปเบชเปเบฒเบเบฑเบ, เบเปเบฝเบเปเบเบฑเบเบเบปเบงเบเบดเบกเบเปเบญเบเปเบฅเบฐเบญเบญเบเบเบฒเบเบฅเปเบฒเบเบปเปเบเบเบญเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเป.
เปเบซเปเปเบเบดเปเบเบงเปเบฒ Tokenizer, TokenFilters, CharFilter เปเบเบเบตเปเบเบฑเบเบงเบดเปเบเบฒเบฐเบฅเบฑเบเปเบเบเปเบเป:
{
"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 ะพััััััะฒััั */
}
}
}
เปเบซเปเบญเบฐเบเบดเบเบฒเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบเบญเบตเบเปเบชเปเบเบฒเบชเบฒเบฅเบฑเบเปเบเบ, เปเบเบดเปเบเบเบฐเบเบฑเบเบญเบญเบ tags 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"
]
}
}
}
เบซเบเปเบฒเบเปเบฒเบญเบดเบ, tags HTML เบเบฑเบเบซเบกเบปเบเบเบฐเบเบทเบเปเบเบเบเปเบฒเบเบญเบญเบเบเบฒเบ string เปเบซเบผเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฒเบเบเบฐเบเบฒเบ tokenizer เบเบฐเปเบเปเบเบญเบญเบเปเบเบฑเบ tokens, tokens เบเบปเบเปเบเปเบฎเบฑเบเบเบฐเบเปเบฒเบเบญเบญเบเปเบเปเบเบเบปเบงเบเบดเบกเบเปเบญเบ, เบเปเบฒเบเบตเปเบเปเปเบชเปเบฒเบเบฑเบเบเบฐเบเบทเบเบฅเบถเบเบญเบญเบ, เปเบฅเบฐ tokens เบเบตเปเบเบฑเบเปเบซเบผเบทเบญเบเบฐเบเบฑเบเบเบปเบเปเบเบฑเบ stem เบเบญเบเบเปเบฒเบชเบฑเบ.
เบเบฒเบเบชเปเบฒเบเบเบฑเบเบชเบฐเบเบต
เบเปเบฒเบเปเบเบดเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบญเบฐเบเบดเบเบฒเบเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐเปเบฅเบตเปเบกเบเบปเปเบ. เบกเบฑเบเบเบฐเปเบเปเบเบฑเบเบเปเบญเบเบชเบฐเบเบฃเบดเบเบเบฑเบเปเบปเบ. เปเบเบชเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเปเบเบฑเบเบซเบผเบฒเบเบญเบฑเบ, เบเบฑเปเบเบเบฑเปเบเปเบเบฑเบเบเบฐเบเบทเบเบเบฐเบกเบงเบเบเบปเบเปเบเบเบเบฑเบเบงเบดเปเบเบฒเบฐ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบญเบเบซเบฒเบเปเปเบเบงเบฒเบกเปเบเบเบเบปเบเบเบฑเบเปเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบดเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเบซเบเบฒเบก tags.
เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบ index blog2 เบเปเบงเบเบเบปเบงเบงเบดเปเบเบฒเบฐเปเบฅเบฐเบเบฒเบเบชเปเบฒเบเปเบเบเบเบตเป, เปเบเบดเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบฒเบเบชเบฐเบซเบเบฒเบก tags เบเบทเบเบเบดเบเปเบเปเบเบฒเบ:
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 เบเปเปเบเบงเบฒเบกเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฑเบเบชเบฐเบเบตเบเบตเป (blog2). เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบปเบเปเบฅเบตเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบเบฒเบฐเบงเปเบฒ ... เบกเบฑเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฒเบเปเบเบตเปเบกเปเบญเบเบฐเบชเบฒเบเปเบเบปเปเบฒเปเบเบเบฑเบเบชเบฐเบเบต blog.
เบเบฒเบเบเบญเบเบซเบฒเบเปเปเบเบงเบฒเบกเปเบเบฑเบกเบเปเบงเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบ
เปเบซเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเปเบฒเบฎเปเบญเบเบเปเบเบฐเปเบเบเบญเบทเปเบ:
# ะฝะฐะนะดะตะผ ะดะพะบัะผะตะฝัั, ะฒ ะบะพัะพััั
ะฒัััะตัะฐะตััั ัะปะพะฒะพ 'ะธััะพัะธะธ'
# 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"
]
}
}
}'
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบเปเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐเบเบตเปเบกเบต stemming เบเบฒเบชเบฒเบฅเบฑเบเปเบเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบตเปเบเบฐเบชเบปเปเบเบเบทเบเปเบญเบเบฐเบชเบฒเบเบเบฑเบเบซเบกเบปเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบงเบเบกเบฑเบเบกเบตเบเบฝเบเปเบเปเบเปเบฒเบงเปเบฒ 'เบเบฐเบซเบงเบฑเบเบชเบฒเบ'.
เบเบฒเบเบฎเปเบญเบเบเปเบญเบฒเบเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบ, เบเบปเบงเบขเปเบฒเบ:
""fried eggs" +(eggplant | potato) -frittata"
เบฎเปเบญเบเบเป syntax:
+ 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 ะฟะพััะฐ ะฟัะพ ะบะพัะธะบะพะฒ
เปเบญเบเบฐเบชเบฒเบ
Elasctic.co เบเบฐเบชเบฒเบเบญเปเบฒเบเบญเบตเบ เบเบนเปโเบกเบท เบเบณเบชเบฑเบ เบเบฒเบเบเบฑเปเบเบเปเบฒ เบเบฒเบเบเบฑเบเบเบฒเบเปเบญเบเบฐเบชเบฒเบ เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฑเบเบชเบฐเบเบต เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเปเบฒเบฎเปเบญเบเบเป
PS
เบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ - เบเบปเบเบฎเบฝเบ, เบกเบตเปเบเบงเบเบงเบฒเบกเบเบดเบเบชเปเบฒเบฅเบฑเบเบเบปเบเบเบงเบฒเบกเปเบซเบกเป, เบซเบผเบทเบกเบตเบเบฒเบเบชเบฐเปเบซเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเปเบงเบกเบกเบท, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบเบตเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเปเปเบเบงเบฒเบกเปเบเบเปเปเบเบงเบฒเบกเบชเปเบงเบเบเบธเบเบเบปเบเบซเบผเบทเบเบฒเบเบญเบตเปเบกเบฅเป. [email protected].
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com