Elasticsearch Basics

Elasticsearch dia motera fikarohana misy json rest api, mampiasa Lucene ary voasoratra amin'ny Java. Ny famaritana ny tombony rehetra amin'ity motera ity dia hita ao amin'ny tranonkala ofisialy. Amin'ity manaraka ity dia hiantso ny Elasticsearch ho ES isika.

Ny maotera mitovy amin'izany dia ampiasaina amin'ny fikarohana sarotra amin'ny angon-drakitra antontan-taratasy. Ohatra, mikaroka amin'ny alΓ lan'ny morphologie ny fiteny na mikaroka amin'ny alΓ lan'ny koordinate geo.

Amin'ity lahatsoratra ity dia hiresaka momba ny fototry ny ES aho amin'ny fampiasana ny ohatra amin'ny fanondroana lahatsoratra bilaogy. Hasehoko anao ny fomba fanivanana, fanasokajiana ary fitadiavana antontan-taratasy.

Mba tsy hiankin-doha amin'ny rafitra miasa dia hanao ny fangatahana rehetra amin'ny ES aho amin'ny fampiasana CURL. Misy ihany koa ny plugin ho an'ny google chrome antsoina hevitra.

Ny lahatsoratra dia misy rohy mankany amin'ny antontan-taratasy sy loharano hafa. Amin'ny farany dia misy rohy ahafahana miditra haingana amin'ny antontan-taratasy. Famaritana ny teny tsy mahazatra dia hita ao amin'ny glossaries.

Fametrahana ES

Mba hanaovana izany dia mila Java aloha isika. mpandraharaha Recommend mametraka dikan-teny Java vaovao kokoa noho ny Java 8 update 20 na Java 7 update 55.

Ny fizarana ES dia hita ao amin'ny tranonkala developer. Aorian'ny famoahana ny rakitra dia mila mihazakazaka ianao bin/elasticsearch. Misy ihany koa fonosana ho an'ny apt sy yum. Misy sary ofisialy ho an'ny docker. Bebe kokoa momba ny fametrahana.

Aorian'ny fametrahana sy fandefasana, andeha hojerentsika ny fiasa:

# для удобства Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ адрСс Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
#export ES_URL=$(docker-machine ip dev):9200
export ES_URL=localhost:9200

curl -X GET $ES_URL

Hahazo zavatra toy izao isika:

{
  "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"
}

nirakitra anarana

Andeha isika hanampy lahatsoratra amin'ny 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"
}'

valintenin'ny mpizara:

{
  "_index" : "blog",
  "_type" : "post",
  "_id" : "1",
  "_version" : 1,
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : false
}

ES noforonina ho azy Fanondroana blog ary karazana lahatsoratra. Afaka manao fanoharana misy fepetra isika: ny index dia angon-drakitra, ary ny karazany dia ny latabatra ao amin'ity tahiry ity. Samy manana ny drafiny βˆ’ ny karazana tsirairay sarintany, toy ny tabilao fifandraisana. Ny sari-tany dia miforona ho azy rehefa misy indexed ny antontan-taratasy:

# ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ mapping всСх Ρ‚ΠΈΠΏΠΎΠ² индСкса blog
curl -XGET "$ES_URL/blog/_mapping?pretty"

Ao amin'ny valintenin'ny mpizara dia nampiako ny sandan'ny sahan'ny antontan-taratasy voarakitra ao amin'ny fanehoan-kevitra:

{
  "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"
          }
        }
      }
    }
  }
}

Tsara ny manamarika fa ny ES dia tsy manavaka ny sanda tokana sy ny sanda maromaro. Ohatra, misy lohateny tsotra fotsiny ny saha lohateny, ary misy tady maromaro ny saha misy marika, na dia aseho amin'ny fomba mitovy amin'ny fanaovana sari-tany aza izy ireo.
Hiresaka bebe kokoa momba ny sarintany isika aoriana.

fangatahana

Maka antontan-taratasy amin'ny 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"
  }
}

Fanalahidy vaovao no niseho tao amin'ny valiny: _version ΠΈ _source. Amin'ny ankapobeny, ny fanalahidy rehetra manomboka amin'ny _ dia sokajiana ho ofisialy.

manan-danja _version mampiseho ny dikan-drakitra. Ilaina izany mba hiasa ny mekanika fanidy optimistika. Ohatra, te-hanova antontan-taratasy manana dikan-teny 1 izahay. Atolotray ny antontan-taratasy novana ary asehoy fa fanitsiana ny antontan-taratasy misy dikan-teny 1. Raha misy olon-kafa nanova antontan-taratasy misy dikan-teny 1 koa ary nandefa fanovana teo anoloanay, dia Tsy hanaiky ny fiovanay ny ES, satria mitahiry ny antontan-taratasy miaraka amin'ny version 2.

manan-danja _source misy ny antontan-taratasy notondroinay. Tsy mampiasa io sanda io amin'ny asa fikarohana ny ES satria Ny fanondroana dia ampiasaina amin'ny fikarohana. Mba hitsitsiana toerana, ES dia mitahiry antontan-taratasy loharano voaporitra. Raha ny id ihany no ilainay, fa tsy ny antontan-taratasy loharano iray manontolo, dia afaka manafoana ny fitahirizana loharano.

Raha tsy mila fampahalalana fanampiny isika dia ny votoatin'ny _source ihany:

curl -XGET "$ES_URL/blog/post/1/_source?pretty"
{
  "title" : "ВСсСлыС котята",
  "content" : "<p>БмСшная история ΠΏΡ€ΠΎ котят<p>",
  "tags" : [ "котята", "смСшная история" ],
  "published_at" : "2014-09-12T20:44:42+00:00"
}

Tsy afaka misafidy afa-tsy saha sasany ihany koa ianao:

# ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅ title
curl -XGET "$ES_URL/blog/post/1?_source=title&pretty"
{
  "_index" : "blog",
  "_type" : "post",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "title" : "ВСсСлыС котята"
  }
}

Andao hanondro lahatsoratra vitsivitsy hafa ary hanao fanontaniana sarotra kokoa.

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"
}'

manavaka

# Π½Π°ΠΉΠ΄Π΅ΠΌ послСдний пост ΠΏΠΎ Π΄Π°Ρ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ поля 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 ]
    } ]
  }
}

Nifidy ny lahatsoratra farany izahay. size mametra ny isan'ny antontan-taratasy havoaka. total mampiseho ny fitambaran'ny antontan-taratasy mifanaraka amin'ny fangatahana. sort ao amin'ny vokatra dia misy integer maromaro izay anaovana fanasokajiana. Ireo. niova ho isa ny daty. Ny fampahalalana bebe kokoa momba ny fanasokajiana dia azo jerena ao tahirin-kevitra.

Sivana sy fanontaniana

ES hatramin'ny dikan-teny 2 dia tsy manavaka ny sivana sy ny fanontaniana ampidirina ny foto-kevitry ny contexte.
Ny contexte query dia tsy mitovy amin'ny contexte sivana satria ny query dia miteraka _score ary tsy voatahiry. Hasehoko anao hoe inona ny _score any aoriana.

Sivanina araka ny daty

Mampiasa ny fangatahana izahay isan-karazany ao anatin'ny tontolon'ny sivana:

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ посты, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ 1ΠΎΠ³ΠΎ сСнтября ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
  "filter": {
    "range": {
      "published_at": { "gte": "2014-09-01" }
    }
  }
}'

Sivanina amin'ny marika

Ampiasainay fanontaniana teny hikaroka ny ID antontan-taratasy misy teny nomena:

# Π½Π°ΠΉΠ΄Π΅ΠΌ всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π² ΠΏΠΎΠ»Π΅ 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" : [ "котята" ]
      }
    } ]
  }
}

Fikarohana lahatsoratra feno

Ny telo amin'ireo antontan-taratasinay dia ahitana ireto manaraka ireto ao amin'ny sehatry ny atiny:

  • <p>БмСшная история ΠΏΡ€ΠΎ котят<p>
  • <p>БмСшная история ΠΏΡ€ΠΎ Ρ‰Π΅Π½ΠΊΠΎΠ²<p>
  • <p>Π”ΡƒΡˆΠ΅Ρ€Π°Π·Π΄ΠΈΡ€Π°ΡŽΡ‰Π°Ρ история ΠΏΡ€ΠΎ Π±Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΡ‚Π΅Π½ΠΊΠ° с ΡƒΠ»ΠΈΡ†Ρ‹<p>

Ampiasainay fanontaniana mifanandrify hikaroka ny ID antontan-taratasy misy teny nomena:

# 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
    } ]
  }
}

Na izany aza, raha mitady "tantara" ao amin'ny sehatry ny votoaty isika, dia tsy hahita na inona na inona, satria Ny teny tany am-boalohany ihany no ao amin'ilay fanondroana, fa tsy ny tahony. Mba hanaovana fikarohana avo lenta dia mila manamboatra ny mpandinika ianao.

saha _score mampiseho HAJANY. Raha tanterahana amin'ny contexte sivana ny fangatahana, dia hitovy amin'ny 1 foana ny sanda _score, izay midika fa mifanaraka tanteraka amin'ny sivana.

analyzers

analyzers ilaina ny mamadika ny lahatsoratra loharano ho andiana famantarana.
Ny mpandinika dia misy iray Tokenizer ary safidy maromaro TokenFilters. Tokenizer dia mety hialohavan'ny maromaro CharFilters. Ny tokenizer dia manapaka ny tady loharano ho famantarana, toy ny habaka sy ny mari-piatoana. Ny TokenFilter dia afaka manova famantarana, mamafa na manampy vaovao, ohatra, mamela afa-tsy ny fototry ny teny, manala prepositions, manampy synonymes. CharFilter - manova ny tady loharano manontolo, ohatra, manapaka ny tag html.

Misy maromaro ny ES mpanadihady mahazatra. Ohatra, mpandinika Rosiana.

Andao hanararaotra API ary andao hojerentsika ny fomba nanovan'ireo mpanadihady mahazatra sy rosiana ny andian-dahatsoratra "Tantara mampihomehy momba ny saka":

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ 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
  } ]
}

Nozarain'ny mpanadihady manara-penitra tamin'ny habaka ny kofehy ary nanova ny zava-drehetra ho litera kely, nesorin'ny mpanadihady Rosiana ny teny tsy manan-danja, nanova azy ho litera kely ary namela ny fototry ny teny.

Andeha hojerentsika izay Tokenizer, TokenFilters, CharFilters ampiasain'ny mpanadihady Rosiana:

{
  "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 ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ */
    }
  }
}

Andeha hofaritana ny mpandinika anay mifototra amin'ny teny Rosiana, izay hanapaka ny marika html. Aleo atao hoe default, satria mpandinika manana an'io anarana io no hampiasaina amin'ny alΓ lan'ny 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"
      ]
    }
  }
}

Voalohany, esorina ao amin'ny tady loharano ny marika HTML rehetra, avy eo ny fenitry ny tokenizer dia hizara izany ho marika, ny marika aterak'izany dia hifindra amin'ny litera kely, ny teny tsy misy dikany dia esorina, ary ny sisa tavela dia hijanona ho fototry ny teny.

Mamorona tondro

Etsy ambony dia nofaritanay ny analyzer default. Hihatra amin'ny saha tady rehetra izany. Misy marika maromaro ny lahatsoratray, noho izany dia hokarakarain'ny mpandinika ihany koa ny marika. SATRIA Mitady lahatsoratra mifanandrify tsara amin'ny tag iray izahay, avy eo dia mila esorina ny famakafakana ho an'ny saha tags.

Andao hamorona bilaogy index2 miaraka amin'ny mpanadihady sy sarintany, izay tsy misy ny famakafakana ny saha 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"
        }
      }
    }
  }
}'

Andao ampiana lahatsoratra 3 mitovy amin'ity tondro ity (blog2). Hafoiko ity dingana ity satria... mitovy amin'ny fampidirana antontan-taratasy amin'ny tondro bilaogy izany.

Fikarohana lahatsoratra feno miaraka amin'ny fanohanan'ny fiteny

Andeha hojerentsika karazana fangatahana hafa:

# Π½Π°ΠΉΠ΄Π΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встрСчаСтся слово 'истории'
# 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"
      ]
    }
  }
}'

SATRIA Mampiasa mpandinika miaraka amin'ny teny rosiana izahay, dia hamerina ny antontan-taratasy rehetra io fangatahana io, na dia misy ny teny hoe 'tantara' fotsiny aza.

Mety misy tarehintsoratra manokana ny fangatahana, ohatra:

""fried eggs" +(eggplant | potato) -frittata"

Fangatahana syntax:

+ signifies AND operation
| signifies OR operation
- negates a single token
" wraps a number of tokens to signify a phrase for searching
* at the end of a term signifies a prefix query
( and ) signify precedence
~N after a word signifies edit distance (fuzziness)
~N after a phrase signifies slop amount
# Π½Π°ΠΉΠ΄Π΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π±Π΅Π· слова 'Ρ‰Π΅Π½ΠΊΠΈ'
curl -XPOST "$ES_URL/blog2/post/_search?pretty" -d'
{
  "query": {
    "simple_query_string": {
      "query": "-Ρ‰Π΅Π½ΠΊΠΈ",
      "fields": [
        "title^3",
        "tags^2",
        "content"
      ]
    }
  }
}'

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 2 поста ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΈΠΊΠΎΠ²

soratra masina

PS

Raha liana amin'ny lesona lahatsoratra toy izany ianao, manana hevitra momba ny lahatsoratra vaovao na manana soso-kevitra momba ny fiaraha-miasa, dia ho faly aho handray hafatra amin'ny hafatra manokana na amin'ny mailaka m.kuzmin+habr@darkleaf.ru.

Source: www.habr.com