Elasticsearch ื‘ืึทืกื™ืงืก

Elasticsearch ืื™ื– ืึท ื–ื•ื›ืŸ ืžืึธื˜ืึธืจ ืžื™ื˜ json rest api, ื ื™ืฆืŸ Lucene ืื•ืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Java. ื ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ืึทืœืข ื“ื™ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ ื“ืขื ืžืึธื˜ืึธืจ ืื™ื– ื‘ื ื™ืžืฆื ืื™ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ืคึผืœืึทืฅ. ืื™ืŸ ื•ื•ืึธืก ื’ื™ื™ื˜, ืžื™ืจ ื•ื•ืขืœืŸ ืึธืคึผืฉื™ืงืŸ ืฆื• Elasticsearch ื•ื•ื™ ES.

ืขื ืœืขื›ืข ืขื ื“ื–ืฉืึทื ื– ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ืงืึธืžืคึผืœืขืงืก ืึธื ืคึฟืจืขื’ืŸ ืื™ืŸ ืึท ื“ืึธืงื•ืžืขื ื˜ ื“ืึทื˜ืึทื‘ื™ื™ืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื–ื•ื›ืŸ ืžื™ื˜ ื“ื™ ืžืึธืจืคืึธืœืึธื’ื™ ืคื•ืŸ ื“ืขืจ ืฉืคึผืจืึทืš ืึธื“ืขืจ ื–ื•ื›ืŸ ื“ื•ืจืš ื’ืขืึธ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ.

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืขืœ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ื‘ืึทืกื™ืงืก ืคื•ืŸ ES ื ื™ืฆืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื™ื ื“ืขืงืกื™ื ื’ ื‘ืœืึธื’ ืึทืจื˜ื™ืงืœืขืŸ. ืื™ืš ื•ื•ืขื˜ ื•ื•ื™ื™ึทื–ืŸ ืื™ืจ ื•ื•ื™ ืฆื• ืคื™ืœื˜ืขืจ, ืกืึธืจื˜ ืื•ืŸ ื–ื•ื›ืŸ ื“ืึธืงื•ืžืขื ื˜ืŸ.

ื›ึผื“ื™ ื ื™ืฉื˜ ืฆื• ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื, ืื™ืš ื•ื•ืขืœ ืžืึทื›ืŸ ืึทืœืข ืจื™ืงื•ื•ืขืก ืฆื• ES ื ื™ืฆืŸ CURL. ืขืก ืื™ื– ืื•ื™ืš ืึท ืคึผืœื•ื’ื™ืŸ ืคึฟืึทืจ Google ืงืจืึธื•ื ื’ืขืจื•ืคืŸ ื’ืขืคื™ืœ.

ื“ืขืจ ื˜ืขืงืกื˜ ื›ึผื•ืœืœ ืœื™ื ืงืก ืฆื• ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ืŸ ืื ื“ืขืจืข ืžืงื•ืจื™ื. ืื™ืŸ ื“ื™ ืกื•ืฃ ืขืก ื–ืขื ืขืŸ ืœื™ื ืงืก ืคึฟืึทืจ ืฉื ืขืœ ืึทืงืกืขืก ืฆื• ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ. ื“ืขืคื™ื ื™ืฆื™ืขืก ืคื•ืŸ ืึทื ืคืึทืžื™ืœื™ืขืจ ื˜ืขืจืžื™ื ืขืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื’ืœืึธืกืึทืจืŸ.

ื™ื ืกื˜ืึธืœื™ื ื’ ES

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ืขืจืฉื˜ืขืจ ื“ืึทืจืคึฟืŸ Java. ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืจืขืงืึธืžืขื ื“ื™ืจืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ Java ื•ื•ืขืจืกื™ืขืก ื ื™ื™ึทืขืจ ื•ื•ื™ Java 8 ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ 20 ืึธื“ืขืจ Java 7 ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ 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 ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื‘ืืฉืืคืŸ ืื™ื ื“ืขืงืก ื‘ืœืึธื’ ืื•ืŸ ื˜ื™ืคึผ ืคึผืึธืกื˜ืŸ. ืžื™ืจ ืงืขื ืขืŸ ืฆื™ืขืŸ ืึท ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืึทื ืึทืœืึทื“ื–ืฉื™: ืึทืŸ ืื™ื ื“ืขืงืก ืื™ื– ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื•ืŸ ืึท ื˜ื™ืคึผ ืื™ื– ืึท ื˜ื™ืฉ ืื™ืŸ ื“ืขื ื“ืึทื˜ืึทื‘ื™ื™ืก. ื™ืขื“ืขืจ ื˜ื™ืคึผ ื”ืื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืกื›ืขืžืข - ืžืึทืคึผื™ื ื’, ืคึผื•ื ืงื˜ ื•ื•ื™ ืึท ืจื™ืœื™ื™ืฉืึทื ืึทืœ ื˜ื™ืฉ. ืžืึทืคึผื™ื ื’ ืื™ื– ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื•ื•ืขืŸ ื“ืขืจ ื“ืึธืงื•ืžืขื ื˜ ืื™ื– ื™ื ื“ืขืงืกื˜:

# ะŸะพะปัƒั‡ะธะผ 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 ืื•ืŸ ื“ืขืจืœืื ื’ื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ ืคืืจ ืื•ื ื“ื– 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"
}'

ะกะพั€ั‚ะธั€ะพะฒะบะฐ

# ะฝะฐะนะดะตะผ ะฟะพัะปะตะดะฝะธะน ะฟะพัั‚ ะฟะพ ะดะฐั‚ะต ะฟัƒะฑะปะธะบะฐั†ะธะธ ะธ ะธะทะฒะปะตั‡ะตะผ ะฟะพะปั 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 ื˜ื•ื˜ ื ื™ืฉื˜ ื•ื™ืกื˜ื™ื™ืœืŸ ืฆื•ื•ื™ืฉืŸ ืคื™ืœื˜ืขืจืก ืื•ืŸ ืงื•ื•ื™ืจื™ื–, ืึทื ืฉื˜ืึธื˜ ื“ืขืจ ื‘ืึทื’ืจื™ืฃ ืคื•ืŸ ืงืึทื ื˜ืขืงืกืฅ ืื™ื– ื‘ืึทืงืขื ืขื .
ื ืึธื ืคึฟืจืขื’ ืงืึธื ื˜ืขืงืกื˜ ืื™ื– ืึทื ื“ืขืจืฉ ืคื•ืŸ ืึท ืคื™ืœื˜ืขืจ ืงืึธื ื˜ืขืงืกื˜ ืื™ืŸ ืึทื– ื“ื™ ืึธื ืคึฟืจืขื’ ื“ื–ืฉืขื ืขืจื™ื™ืฅ ืึท _ืกืงืึธืจืข ืื•ืŸ ืื™ื– ื ื™ืฉื˜ ืงืึทืฉื˜. ืื™ืš ื•ื•ืขืœ ื“ื™ืจ ื•ื•ื™ื™ื–ืŸ ื•ื•ืืก _ืกืงื•ืจ ืื™ื– ืฉืคืขื˜ืขืจ.

ืคื™ืœื˜ืขืจ ืœื•ื™ื˜ ื“ืึทื˜ืข

ืžื™ืจ ื ื•ืฆืŸ ื“ื™ ื‘ืงืฉื” ืงื™ื™ื˜ ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ืคื™ืœื˜ืขืจ:

# ะฟะพะปัƒั‡ะธะผ ะฟะพัั‚ั‹, ะพะฟัƒะฑะปะธะบะพะฒะฐะฝะฝั‹ะต 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 ื•ื•ื™ื™ื–ื˜ ืฉื™ื™ื›ื•ืช. ืื•ื™ื‘ ื“ื™ ื‘ืขื˜ืŸ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ืึท ืคื™ืœื˜ืขืจ ืงืึธื ื˜ืขืงืกื˜, ื“ื™ _ืกืงืึธืจืข ื•ื•ืขืจื˜ ื•ื•ืขื˜ ืฉื˜ืขื ื“ื™ืง ื–ื™ื™ืŸ ื’ืœื™ื™ึทืš ืฆื• 1, ื•ื•ืึธืก ืžื™ื˜ืœ ืึท ื’ืึทื ืฅ ื’ืœื™ื™ึทื›ืŸ ืฆื• ื“ื™ ืคื™ืœื˜ืขืจ.

ืึทื ืึทืœื™ื–ืขืจืก

ืึทื ืึทืœื™ื–ืขืจืก ื–ืขื ืขืŸ ื“ืืจืฃ ืฆื• ื‘ื™ื™ึทื˜ืŸ ื“ื™ ืžืงื•ืจ ื˜ืขืงืกื˜ ืื™ืŸ ืึท ืกื›ื•ื ืคื•ืŸ ื˜ืึธืงืขื ืก.
ืึทื ืึทืœื™ื–ืขืจืก ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ืคื•ืŸ ืื™ื™ืŸ ื˜ืึธืงืขื ื™ื–ืขืจ ืื•ืŸ ืขื˜ืœืขื›ืข ืึทืคึผืฉืึทื ืึทืœ TokenFilters. ื˜ืึธืงืขื ื™ื–ืขืจ ืงืขืŸ ื–ื™ื™ืŸ ืคึผืจื™ืกื™ื“ืึทื“ ื“ื•ืจืš ืขื˜ืœืขื›ืข ื˜ืฉืึทืจืคื™ืœื˜ืขืจืก. ื˜ืึธืงืขื ื™ื–ืขืจื– ื‘ืจืขื›ืŸ ื“ื™ ืžืงื•ืจ ืฉื˜ืจื™ืงืœ ืื™ืŸ ื˜ืึธืงืขื ืก, ืึทื–ืึท ื•ื•ื™ ืกืคึผื™ื™ืกืึทื– ืื•ืŸ ืคึผื•ื ืงื˜ื•ืึทืฆื™ืข ืื•ืชื™ื•ืช. TokenFilter ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ื˜ืึธืงืขื ืก, ื•ื™ืกืžืขืงืŸ ืึธื“ืขืจ ืœื™ื™ื’ืŸ ื ื™ื™ึท ืึธื ืขืก, ืœืžืฉืœ, ืœืึธื–ืŸ ื‘ืœื•ื™ื– ื“ื™ ืกื˜ืขื ืคื•ืŸ ื“ืขื ื•ื•ืึธืจื˜, ืึทืจืึธืคึผื ืขืžืขืŸ ืคึผืจืขืคึผืึธืกื™ื˜ื™ืึธื ืก, ืœื™ื™ื’ืŸ ืกื™ื ืึธื ื™ืžืก. ื˜ืฉืึทืจืคื™ืœื˜ืขืจ - ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ื™ ื’ืื ืฆืข ืžืงื•ืจ ืฉื˜ืจื™ืงืœ, ืœืžืฉืœ, ืฉื ื™ื™ึทื“ืŸ HTML ื˜ืึทื’ืก.

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, 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 ะฟะพัั‚ะฐ ะฟั€ะพ ะบะพั‚ะธะบะพะฒ

ืจืขืคึฟืขืจืขื ืฆืŸ

PS

ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ืขื ืœืขืš ืึทืจื˜ื™ืงืœืขืŸ-ืœืขืงืฆื™ืขืก, ื”ืึธื‘ืŸ ื™ื™ื“ื™ืึทื– ืคึฟืึทืจ ื ื™ื™ึทืข ืึทืจื˜ื™ืงืœืขืŸ, ืึธื“ืขืจ ื”ืึธื‘ืŸ ืคึผืจืึทืคึผืึธื•ื–ืึทืœื– ืคึฟืึทืจ ืงื•ื•ืึทืคึผืขืจื™ื™ืฉืึทืŸ, ืื™ืš ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึท ืึธื ื–ืึธื’ ืื™ืŸ ืึท ืคึผืขืจื–ืขื ืœืขืš ืึธื ื–ืึธื’ ืึธื“ืขืจ ื“ื•ืจืš E- ื‘ืจื™ื•ื• [ืื™ืžืขื™ืœ ื‘ืืฉื™ืฆื˜].

ืžืงื•ืจ: www.habr.com