Elasticsearch Π΅ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°Ρ ΡΠΎ json rest api, ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ Lucene ΠΈ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Java. ΠΠΏΠΈΡ Π½Π° ΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π½Π° ΠΎΠ²ΠΎΡ ΠΌΠΎΡΠΎΡ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ΅Π½ Π½Π°
Π‘Π»ΠΈΡΠ½ΠΈ ΠΌΠΎΡΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ° Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π·Π΅ΠΌΠ°ΡΡΠΈ ΡΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎ Π³Π΅ΠΎΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ.
ΠΠΎ ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌ Π·Π° ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ES ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π²ΠΈ Π½Π° Π±Π»ΠΎΠ³ΠΎΠ²ΠΈ. ΠΠ΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠ΅, ΠΏΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΈ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ.
ΠΠ° Π΄Π° Π½Π΅ Π·Π°Π²ΠΈΡΠ°ΠΌ ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΠ΅ Π³ΠΈ ΠΏΠΎΠ΄Π½Π΅ΡΠ°ΠΌ ΡΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° Π΄ΠΎ ES ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ CURL. ΠΠΌΠ° ΠΈ Π΄ΠΎΠ΄Π°ΡΠΎΠΊ Π·Π° 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 Π½Π΅ ΠΏΡΠ°Π²ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π΅Π΄Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈ Π½ΠΈΠ·Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»Π΅ΡΠΎ Π·Π° Π½Π°ΡΠ»ΠΎΠ² Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠΎΠ΄ΡΠΆΠΈ Π½Π°ΡΠ»ΠΎΠ², Π° ΠΏΠΎΠ»Π΅ΡΠΎ ΠΎΠ·Π½Π°ΠΊΠΈ ΡΠΎΠ΄ΡΠΆΠΈ Π½ΠΈΠ·Π° Π½ΠΈΠ·ΠΈ, ΠΈΠ°ΠΊΠΎ ΡΠΈΠ΅ ΡΠ΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½ΠΈ Π½Π° ΠΈΡΡ Π½Π°ΡΠΈΠ½ ΠΏΡΠΈ ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ΡΠΎ.
ΠΠΎΠ΄ΠΎΡΠ½Π° ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅.
ΠΠ°ΡΠ°ΡΠ°
ΠΡΠ°ΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΏΠΎΡΠ΅Π΄ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΈΠ΄:
# ΠΈΠ·Π²Π»Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ 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 ΠΈ ΠΏΠΎΠ΄Π½Π΅Π» ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΡΠ΅Π΄ Π½Π°Ρ, ΡΠΎΠ³Π°Ρ ΠΠ‘ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΈ ΠΏΡΠΈΡΠ°ΡΠΈ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π³ΠΎ Π·Π°ΡΡΠ²ΡΠ²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΡ ΡΠΎ Π²Π΅ΡΠ·ΠΈΡΠ° 2.
ΠΠ»ΡΡΠ½ΠΈ _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
Π²ΠΎ ΠΈΠ·Π»Π΅Π·ΠΎΡ ΡΠΎΠ΄ΡΠΆΠΈ Π½ΠΈΠ·Π° ΠΎΠ΄ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ ΡΠΎ ΠΊΠΎΠΈ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎΡΡΠΈΡΠ°ΡΠ΅. ΠΠ½ΠΈΠ΅. Π΄Π°ΡΡΠΌΠΎΡ Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ΅Π½ Π²ΠΎ ΡΠ΅Π» Π±ΡΠΎΡ. ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΎΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΠ΄Π΅ΡΠ΅ Π²ΠΎ
Π€ΠΈΠ»ΡΡΠΈ ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°
ES Π±ΠΈΠ΄Π΅ΡΡΠΈ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 2 Π½Π΅ ΠΏΡΠ°Π²ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΠ»ΡΡΠΈ ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°, Π½Π°ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ°
ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π° ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΡ Π½Π° ΡΠΈΠ»ΡΠ΅ΡΠΎΡ ΠΏΠΎ ΡΠΎΠ° ΡΡΠΎ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° _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
Π΅ΠΌΠΈΡΠΈΠΈ
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ ΡΠΎΡΡΠΎΡΠ°Ρ ΠΎΠ΄ Π΅Π΄Π΅Π½
ΠΠ‘ ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ
ΠΡΠ΄Π΅ Π΄Π° Π³ΠΈ ΠΈΡΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ 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, CharFilters Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΡΠΊΠΈΠΎΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ:
{
"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 ΠΏΠΎΡΡΠ° ΠΏΡΠΎ ΠΊΠΎΡΠΈΠΊΠΎΠ²
ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ
Elasctic.co Π‘ΡΠ΄ Π²ΠΎΠ΄ΠΈΡ Π Π΅ΡΠ½ΠΈΠΊ ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° ΠΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ ΠΠ½Π΄Π΅ΠΊΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π‘ΠΏΠΈΡΠΎΠΊ Π½Π° Π±Π°ΡΠ°ΡΠ°
PS
ΠΠΎΠΊΠΎΠ»ΠΊΡ ΡΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ»ΠΈΡΠ½ΠΈ Π½Π°ΠΏΠΈΡΠΈ-Π»Π΅ΠΊΡΠΈΠΈ, ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ΄Π΅ΠΈ Π·Π° Π½ΠΎΠ²ΠΈ Π½Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠ·ΠΈ Π·Π° ΡΠΎΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠΎΠ³Π°Ρ ΡΠ΅ ΠΌΠΈ Π±ΠΈΠ΄Π΅ Π΄ΡΠ°Π³ΠΎ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ°ΠΌ ΠΏΠΎΡΠ°ΠΊΠ° Π²ΠΎ Π»ΠΈΡΠ½Π° ΠΏΠΎΡΠ°ΠΊΠ° ΠΈΠ»ΠΈ Π½Π° Π΅-ΠΏΠΎΡΡΠ° [Π·Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎ Π΅-ΠΏΠΎΡΡΠ°].
ΠΠ·Π²ΠΎΡ: www.habr.com