เด‡เดฒเดพเดธเตเดฑเตเดฑเดฟเด•เต เดคเดฟเดฐเดฏเตฝ เด…เดŸเดฟเดธเตเดฅเดพเดจเด™เตเด™เตพ

เดฒเต‚เดธเต€เตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดœเดพเดตเดฏเดฟเตฝ เดŽเดดเตเดคเดฟเดฏ json rest api เด‰เดณเตเดณ เด’เดฐเต เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเดจเดพเดฃเต เด‡เดฒเดพเดธเตเดฑเตเดฑเดฟเด•เต เดธเต†เตผเดšเตเดšเต. เดˆ เดŽเดžเตเดšเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เด—เตเดฃเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดตเดฟเดตเดฐเดฃเด‚ เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฃเต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต. เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เด‡เดฒเดพเดธเตเดฑเตเดฑเดฟเด•เต เดธเต†เตผเดšเตเดšเดฟเดจเต† ES เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚.

เด’เดฐเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดคเดฟเดฐเดฏเดฒเตเด•เตพเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏ เดŽเดžเตเดšเดฟเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดญเดพเดทเดฏเตเดŸเต† เดฐเต‚เดชเด˜เดŸเดจ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเดคเตเดคเต เดคเดฟเดฐเดฏเตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดœเดฟเดฏเต‹ เด•เต‹เตผเดกเดฟเดจเต‡เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดฟเดฐเดฏเตเด•.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เดฌเตเดฒเต‹เด—เต เดชเต‹เดธเตเดฑเตเดฑเตเด•เตพ เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต ES เดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚. เดชเตเดฐเดฎเดพเดฃเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเตเด‚ เด…เดŸเตเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดคเดฟเดฐเดฏเดพเดฎเต†เดจเตเดจเตเด‚ เดžเดพเตป เด•เดพเดฃเดฟเดšเตเดšเตเดคเดฐเดพเด‚.

เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เดžเดพเตป CURL เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต ES-เดฒเต‡เด•เตเด•เต เดŽเดฒเตเดฒเดพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ เดจเดŸเดคเตเดคเตเด‚. เด—เต‚เด—เดฟเตพ เด•เตเดฐเต‹เดฎเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดฒเด—เดฟเดจเตเด‚ เด‰เดฃเตเดŸเต เด…เตผเดคเตเดฅเด‚.

เดตเดพเดšเด•เดคเตเดคเดฟเตฝ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เตเด‚ เดฎเดฑเตเดฑเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเดฎเตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดธเดพเดจเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฆเตเดฐเตเดค เดชเตเดฐเดตเต‡เดถเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เด‰เดฃเตเดŸเต. เดชเดฐเดฟเดšเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดชเดฆเด™เตเด™เดณเตเดŸเต† เดจเดฟเตผเดตเดšเดจเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด•เดพเดฃเดพเด‚ เด—เตเดฒเต‹เดธเดฑเดฟเด•เตพ.

ES เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดœเดพเดต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดœเดพเดต 8 เด…เดชเตเดกเต‡เดฑเตเดฑเต 20 เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดœเดพเดต 7 เด…เดชเตเดกเต‡เดฑเตเดฑเต 55 เดจเต‡เด•เตเด•เดพเตพ เดชเตเดคเดฟเดฏ เดœเดพเดต เดชเดคเดฟเดชเตเดชเตเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•.

ES เดตเดฟเดคเดฐเดฃเด‚ เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฃเต เดกเดตเดฒเดชเตเดชเตผ เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต. เด†เตผเด•เตเด•เตˆเดตเต เด…เตบเดชเดพเด•เตเด•เต เดšเต†เดฏเตเดค เดถเต‡เดทเด‚ เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต bin/elasticsearch. เด•เต‚เดŸเดพเดคเต† เดฒเดญเตเดฏเดฎเดพเดฃเต apt, yum เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เตเดณเตเดณ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ. เด‰เดฃเตเดŸเต เดกเต‹เด•เตเด•เดฑเดฟเดจเดพเดฏเตเดณเตเดณ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดšเดฟเดคเตเดฐเด‚. เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเต† เด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเตฝ.

เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเตเด‚ เดธเดฎเดพเดฐเด‚เดญเดคเตเดคเดฟเดจเตเด‚ เดถเต‡เดทเด‚, เดจเดฎเตเด•เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚:

# ะดะปั ัƒะดะพะฑัั‚ะฒะฐ ะทะฐะฟะพะผะฝะธะผ ะฐะดั€ะตั ะฒ ะฟะตั€ะตะผะตะฝะฝัƒัŽ
#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 เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเตฝ เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เดจเดŸเดคเตเดคเตเดจเตเดจ เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏเด•เดณเตเดŸเต† เด’เดฐเต เดจเดฟเดฐ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด†. เดคเต€เดฏเดคเดฟ เด’เดฐเต เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏเดฏเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเดฟ. เด…เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด•เดพเดฃเดพเด‚ เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚.

เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเตเด‚ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเตเด‚

เดชเดคเดฟเดชเตเดชเต 2 เดฎเตเดคเตฝ ES, เดชเด•เดฐเด‚ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเตเด‚ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒ เดธเดจเตเดฆเตผเดญเด™เตเด™เตพ เดŽเดจเตเดจ เด†เดถเดฏเด‚ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.
เด’เดฐเต เดซเดฟเตฝเดŸเตเดŸเตผ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด…เดจเตเดตเต‡เดทเดฃ เดธเดจเตเดฆเตผเดญเด‚ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เดšเต‹เดฆเตเดฏเด‚ เด’เดฐเต _เดธเตเด•เต‹เตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเดพเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. _เดธเตเด•เต‹เตผ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดชเดฟเดจเตเดจเต€เดŸเต เด•เดพเดฃเดฟเดšเตเดšเตเดคเดฐเดพเด‚.

เดคเต€เดฏเดคเดฟ เดชเตเดฐเด•เดพเดฐเด‚ เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเตเด•

เดžเด™เตเด™เตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดถเตเดฐเต‡เดฃเดฟ เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ:

# ะฟะพะปัƒั‡ะธะผ ะฟะพัั‚ั‹, ะพะฟัƒะฑะปะธะบะพะฒะฐะฝะฝั‹ะต 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 เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด…เดคเดพเดฏเดคเต เดซเดฟเตฝเดŸเตเดŸเดฑเตเดฎเดพเดฏเดฟ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเตŠเดฐเตเดคเตเดคเด‚.

เด…เดจเดฒเตˆเดธเดฑเตเด•เตพ

เด…เดจเดฒเตˆเดธเดฑเตเด•เตพ เดธเต‹เดดเตโ€Œเดธเต เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดŸเต‹เด•เตเด•เดฃเตเด•เดณเดพเดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
เด…เดจเดฒเตˆเดธเดฑเตเด•เตพ เด’เดจเตเดจเต เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต เดŸเต‹เด•เตเด•เดจเตˆเดธเตผ เด•เต‚เดŸเดพเดคเต† เดจเดฟเดฐเดตเดงเดฟ เด“เดชเตเดทเดฃเตฝ เดŸเต‹เด•เตเด•เตบ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ. เดŸเต‹เด•เตเด•เดฃเตˆเดธเดฑเดฟเดจเต เดฎเตเดฎเตเดชเดพเดฏเดฟ เดชเดฒเดคเตเด‚ เด‰เดฃเตเดŸเดพเด•เดพเด‚ เดšเดพเตผเดซเดฟเตฝเดฑเตเดฑเดฑเตเด•เตพ. เดŸเต‹เด•เตเด•เดฃเตˆเดธเดฑเตเด•เตพ เด‰เดฑเดตเดฟเดŸ เดธเตโ€ŒเดŸเตเดฐเดฟเด‚เด—เดฟเดจเต† เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเตเด•เดณเตเด‚ เดตเดฟเดฐเดพเดฎเดšเดฟเดนเตเดจ เดชเตเดฐเดคเต€เด•เด™เตเด™เดณเตเด‚ เดชเต‹เดฒเตเดณเตเดณ เดŸเต‹เด•เตเด•เดฃเตเด•เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เตเดจเตเดจเต. เดŸเต‹เด•เตเด•เตบเดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเต เดŸเต‹เด•เตเด•เดฃเตเด•เตพ เดฎเดพเดฑเตเดฑเดพเดจเต‹ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเดจเต‹ เดชเตเดคเดฟเดฏเดต เดšเต‡เตผเด•เตเด•เดพเดจเต‹ เด•เดดเดฟเดฏเตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดพเด•เตเด•เดฟเดจเตเดฑเต† เดคเดฃเตเดŸเต เดฎเดพเดคเตเดฐเด‚ เดตเดฟเดŸเตเด•, เดชเตเดฐเต€เดชเต‹เดธเดฟเดทเดจเตเด•เตพ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด•, เดชเดฐเตเดฏเดพเดฏเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เตเด•. CharFilter - เดฎเตเดดเตเดตเตป เด‰เดฑเดตเดฟเดŸ เดธเตโ€ŒเดŸเตเดฐเดฟเด‚เด—เตเด‚ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, html เดŸเดพเด—เตเด•เตพ เดฎเตเดฑเดฟเด•เตเด•เตเดจเตเดจเต.

ES เดจเต เดจเดฟเดฐเดตเดงเดฟเดฏเตเดฃเตเดŸเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด…เดจเดฒเตˆเดธเดฑเตเด•เตพ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เด…เดจเดฒเตˆเดธเตผ เดฑเดทเตเดฏเตป.

เดจเดฎเตเด•เตเด•เต เดชเตเดฐเดฏเต‹เดœเดจเดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚ api เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต, เดฑเดทเตเดฏเตป เด…เดจเดฒเตˆเดธเดฑเตเด•เตพ "เดชเต‚เดšเตเดšเด•เตเด•เตเดŸเตเดŸเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดฅเด•เตพ" เดŽเดจเตเดจ เดธเตเดŸเตเดฐเดฟเด‚เด—เดฟเดจเต† เดŽเด™เตเด™เดจเต† เดฐเต‚เดชเดพเดจเตเดคเดฐเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚:

# ะธัะฟะพะปัŒะทัƒะตะผ ะฐะฝะฐะปะธะทะฐั‚ะพั€ 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"
        }
      }
    }
  }
}'

เดˆ เดธเต‚เดšเดฟเด•เดฏเดฟเตฝ (blog3) เด…เดคเต‡ 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

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเตเดคเดฐเด‚ เดฒเต‡เด–เดจ-เดชเดพเด เด™เตเด™เดณเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดชเตเดคเดฟเดฏ เดฒเต‡เด–เดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เด†เดถเดฏเด™เตเด™เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเดนเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟเด—เดค เดธเดจเตเดฆเต‡เดถเดฎเดพเดฏเต‹ m.kuzmin+habr@darkleaf.ru เดŽเดจเตเดจ เดฎเต†เดฏเดฟเตฝ เดตเดดเดฟเดฏเต‹ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดžเดพเตป เดธเดจเตเดคเตเดทเตเดŸเดจเดพเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com