Elasticsearch β ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Ρ json rest api, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Lucene ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Java. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΡΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π° . ΠΠ°Π»Π΅Π΅ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ Elasticsearch ΠΊΠ°ΠΊ ES.
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΌ ΠΏΠΎΠΈΡΠΊΠ΅ ΠΏΠΎ Π±Π°Π·Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΈΡΠΊ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ·ΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ geo ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ ΠΎΡΠ½ΠΎΠ²Ρ ES Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠΎΠ² Π±Π»ΠΎΠ³Π°. ΠΠΎΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ, ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΡΠΊΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ.
Π§ΡΠΎΠ±Ρ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ES Ρ Π±ΡΠ΄Ρ Π΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CURL. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ google chrome ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ .
ΠΠΎ ΡΠ΅ΠΊΡΡΡ ΡΠ°ΡΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² .
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ES
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Java. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡΠΈΠΈ Java Π½ΠΎΠ²Π΅Π΅, ΡΠ΅ΠΌ Java 8 update 20 ΠΈΠ»ΠΈ Java 7 update 55.
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² 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 Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π» blog ΠΈ post. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ: ΠΈΠ½Π΄Π΅ΠΊΡ β ΡΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , Π° ΡΠΈΠΏ β ΡΠ°Π±Π»ΠΈΡΠ° Π² ΡΡΠΎΠΉ ΠΠ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΡ Π΅ΠΌΡ β , ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°. Mapping Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°:
# ΠΠΎΠ»ΡΡΠΈΠΌ 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 Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»Π΅ title ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΡΡΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π° ΠΏΠΎΠ»Π΅ tags β ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, Ρ
ΠΎΡΡ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² mapping ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.
ΠΠΎΠ·Π΄Π½Π΅Π΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ°ΠΏΡΠΎΡΡ
ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎ Π΅Π³ΠΎ 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 Ρ
ΡΠ°Π½ΠΈΡ ΡΠΆΠ°ΡΡΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ 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 Ρ ΠΏΠΎΠΊΠ°ΠΆΡ ΠΏΠΎΠ·ΠΆΠ΅.
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ Π΄Π°ΡΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ filter:
# ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΡΡΡ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ 1ΠΎΠ³ΠΎ ΡΠ΅Π½ΡΡΠ±ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
"filter": {
"range": {
"published_at": { "gte": "2014-09-01" }
}
}
}'Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅Π³Π°ΠΌ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° id Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ:
# Π½Π°ΠΉΠ΄Π΅ΠΌ Π²ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, Π² ΠΏΠΎΠ»Π΅ 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" : [ "ΠΊΠΎΡΡΡΠ°" ]
}
} ]
}
}ΠΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΏΠΎΠΈΡΠΊ
Π’ΡΠΈ Π½Π°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΠΏΠΎΠ»Π΅ content ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
<p>Π‘ΠΌΠ΅ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎ ΠΊΠΎΡΡΡ<p><p>Π‘ΠΌΠ΅ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎ ΡΠ΅Π½ΠΊΠΎΠ²<p><p>ΠΡΡΠ΅ΡΠ°Π·Π΄ΠΈΡΠ°ΡΡΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎ Π±Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ΅Π½ΠΊΠ° Ρ ΡΠ»ΠΈΡΡ<p>
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° id Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ:
# 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 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ . ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π²ΡΠΏΠΎΠ½ΡΠ΅ΡΡΡ Π² filter context, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ _score Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 1, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΡ.
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ
Π½ΡΠΆΠ½Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π² Π½Π°Π±ΠΎΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ².
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ
. Tokenizer ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ . Tokenizer ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π½Π° ΡΠΎΠΊΠ΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ ΠΏΡΠ½ΠΊΡΡΠ°ΡΠΈΠΈ. TokenFilter ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΊΠ΅Π½Ρ, ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ»ΠΎΠ²Π°, ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠ³ΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ. CharFilter β ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ΅Π·Π°Π΅Ρ html ΡΠ΅Π³ΠΈ.
Π ES Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ .
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ standard ΠΈ russian ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡ ΡΡΡΠΎΠΊΡ Β«ΠΠ΅ΡΠ΅Π»ΡΠ΅ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎ ΠΊΠΎΡΡΡΒ»:
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ 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
} ]
}Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ°Π·Π±ΠΈΠ» ΡΡΡΠΎΠΊΡ ΠΏΠΎ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅Π» Π²ΡΠ΅ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ, Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ russian β ΡΠ±ΡΠ°Π» Π½Π΅ Π·Π½Π°ΡΠΈΠΌΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΠΏΠ΅ΡΠ΅Π²Π΅Π» Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΠΈ ΠΎΡΡΠ°Π²ΠΈΠ» ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ»ΠΎΠ².
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Tokenizer, TokenFilters, CharFilters ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ russian:
{
"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 ΠΎΡΡΡΡΡΡΠ²ΡΡΡ */
}
}
}ΠΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ russian, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ΅Π·Π°ΡΡ html ΡΠ΅Π³ΠΈ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ default, Ρ.ΠΊ. Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
{
"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 ΡΠ΅Π³ΠΈ, ΠΏΠΎΡΠΎΠΌ Π΅Π΅ ΡΠ°Π·ΠΎΠ±ΡΠ΅Ρ Π½Π° ΡΠΎΠΊΠ΅Π½Ρ tokenizer standard, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΡ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ, ΡΠ΄Π°Π»ΡΡΡΡ Π½Π΅Π·Π½Π°ΡΠΈΠΌΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈ ΠΎΡ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π° ΡΠ»ΠΎΠ²Π°.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°
ΠΡΡΠ΅ ΠΌΡ ΠΎΠΏΠΈΡΠ°Π»ΠΈ default Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ ΠΏΠΎΠ»ΡΠΌ. ΠΠ°Ρ ΠΏΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π³ΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ΅Π³ΠΈ ΡΠΎΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ. Π’.ΠΊ. ΠΌΡ ΠΈΡΠ΅ΠΌ ΠΏΠΎΡΡΡ ΠΏΠΎ ΡΠΎΡΠ½ΠΎΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ΅Π³Ρ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· Π΄Π»Ρ ΠΏΠΎΠ»Ρ tags.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ 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"
]
}
}
}'Π’.ΠΊ. ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Ρ ΡΡΡΡΠΊΠΈΠΌ ΡΡΠ΅ΠΌΠΌΠΈΠ½Π³ΠΎΠΌ, ΡΠΎ ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, Ρ ΠΎΡΡ Π² Π½ΠΈΡ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ²ΠΎ βΠΈΡΡΠΎΡΠΈΡβ.
ΠΠ°ΠΏΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
""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 ΠΏΠΎΡΡΠ° ΠΏΡΠΎ ΠΊΠΎΡΠΈΠΊΠΎΠ²Π‘ΡΡΠ»ΠΊΠΈ
PS
ΠΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ°ΡΡΠΈ-ΡΡΠΎΠΊΠΈ, Π΅ΡΡΡ ΠΈΠ΄Π΅ΠΈ Π½ΠΎΠ²ΡΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΈΠ»ΠΈ Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²Π΅, ΡΠΎ Π±ΡΠ΄Ρ ΡΠ°Π΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π»ΠΈΡΠΊΡ ΠΈΠ»ΠΈ Π½Π° ΠΏΠΎΡΡΡ m.kuzmin+habr@darkleaf.ru.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com
