Elasticsearch என்பது லூசீனைப் பயன்படுத்தி ஜாவாவில் எழுதப்பட்ட json rest api உடன் கூடிய தேடுபொறியாகும். இந்த எஞ்சினின் அனைத்து நன்மைகள் பற்றிய விளக்கமும் கிடைக்கிறது . பின்வருவனவற்றில் எலாஸ்டிக் தேடலை ES என்று குறிப்பிடுவோம்.
ஆவண தரவுத்தளத்தில் சிக்கலான தேடல்களுக்கு இதே போன்ற இயந்திரங்கள் பயன்படுத்தப்படுகின்றன. எடுத்துக்காட்டாக, மொழியின் உருவ அமைப்பைக் கணக்கில் கொண்டு தேடுதல் அல்லது புவி ஆயத்தொகுப்புகளின் மூலம் தேடுதல்.
இந்த கட்டுரையில் வலைப்பதிவு இடுகைகளை அட்டவணைப்படுத்துவதற்கான உதாரணத்தைப் பயன்படுத்தி ES இன் அடிப்படைகளைப் பற்றி பேசுவேன். ஆவணங்களை வடிகட்டுவது, வரிசைப்படுத்துவது மற்றும் தேடுவது எப்படி என்பதை நான் உங்களுக்குக் காண்பிப்பேன்.
இயக்க முறைமையைச் சார்ந்து இருக்கக்கூடாது என்பதற்காக, CURL ஐப் பயன்படுத்தி ES க்கு அனைத்து கோரிக்கைகளையும் செய்வேன். கூகுள் குரோம் என்ற சொருகியும் உள்ளது .
உரையில் ஆவணங்கள் மற்றும் பிற ஆதாரங்களுக்கான இணைப்புகள் உள்ளன. இறுதியில் ஆவணங்களை விரைவாக அணுகுவதற்கான இணைப்புகள் உள்ளன. அறிமுகமில்லாத சொற்களின் வரையறைகளைக் காணலாம் .
ES ஐ நிறுவுகிறது
இதைச் செய்ய, நமக்கு முதலில் ஜாவா தேவை. டெவலப்பர்கள் Java 8 update 20 அல்லது Java 7 update 55ஐ விட புதிய Java பதிப்புகளை நிறுவவும்.
ES விநியோகம் இங்கு கிடைக்கிறது . காப்பகத்தைத் திறந்த பிறகு, நீங்கள் இயக்க வேண்டும் bin/elasticsearch. மேலும் கிடைக்கும் . அங்கு உள்ளது . .
நிறுவல் மற்றும் துவக்கத்திற்குப் பிறகு, செயல்பாட்டைச் சரிபார்க்கலாம்:
# для удобства запомним адрес в переменную
#export ES_URL=$(docker-machine ip dev):9200
export ES_URL=localhost:9200
curl -X GET $ES_URLஇது போன்ற ஒன்றை நாங்கள் பெறுவோம்:
{
"name" : "Heimdall",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.2.1",
"build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",
"build_timestamp" : "2016-03-09T09:38:54Z",
"build_snapshot" : false,
"lucene_version" : "5.4.1"
},
"tagline" : "You Know, for Search"
}அட்டவணைப்படுத்துதல்
ES இல் ஒரு இடுகையைச் சேர்ப்போம்:
# Добавим документ c id 1 типа post в индекс blog.
# ?pretty указывает, что вывод должен быть человеко-читаемым.
curl -XPUT "$ES_URL/blog/post/1?pretty" -d'
{
"title": "Веселые котята",
"content": "<p>Смешная история про котят<p>",
"tags": [
"котята",
"смешная история"
],
"published_at": "2014-09-12T20:44:42+00:00"
}'
சேவையக பதில்:
{
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : false
}
ES தானாகவே உருவாக்கப்பட்டது வலைப்பதிவு மற்றும் அஞ்சல். நாம் ஒரு நிபந்தனை ஒப்புமையை வரையலாம்: ஒரு குறியீட்டு ஒரு தரவுத்தளம், மற்றும் ஒரு வகை என்பது இந்த தரவுத்தளத்தில் ஒரு அட்டவணை. ஒவ்வொரு வகைக்கும் அதன் சொந்த திட்டம் உள்ளது - , ஒரு தொடர்புடைய அட்டவணை போன்றது. ஆவணம் அட்டவணைப்படுத்தப்படும்போது மேப்பிங் தானாகவே உருவாக்கப்படும்:
# Получим mapping всех типов индекса blog
curl -XGET "$ES_URL/blog/_mapping?pretty"சேவையக பதிலில், கருத்துகளில் குறியீட்டு ஆவணத்தின் புலங்களின் மதிப்புகளைச் சேர்த்தேன்:
{
"blog" : {
"mappings" : {
"post" : {
"properties" : {
/* "content": "<p>Смешная история про котят<p>", */
"content" : {
"type" : "string"
},
/* "published_at": "2014-09-12T20:44:42+00:00" */
"published_at" : {
"type" : "date",
"format" : "strict_date_optional_time||epoch_millis"
},
/* "tags": ["котята", "смешная история"] */
"tags" : {
"type" : "string"
},
/* "title": "Веселые котята" */
"title" : {
"type" : "string"
}
}
}
}
}
}ES ஒற்றை மதிப்புக்கும் மதிப்புகளின் வரிசைக்கும் இடையில் வேறுபடுவதில்லை என்பது கவனிக்கத்தக்கது. எடுத்துக்காட்டாக, தலைப்புப் புலம் வெறுமனே ஒரு தலைப்பைக் கொண்டுள்ளது, மேலும் குறிச்சொற்கள் புலத்தில் சரங்களின் வரிசை உள்ளது, இருப்பினும் அவை மேப்பிங்கில் அதே வழியில் குறிப்பிடப்படுகின்றன.
மேப்பிங் பற்றி பின்னர் பேசுவோம்.
கோரிக்கைகளை
ஆவணத்தை அதன் ஐடி மூலம் மீட்டெடுக்கிறது:
# извлечем документ с id 1 типа post из индекса blog
curl -XGET "$ES_URL/blog/post/1?pretty"{
"_index" : "blog",
"_type" : "post",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"title" : "Веселые котята",
"content" : "<p>Смешная история про котят<p>",
"tags" : [ "котята", "смешная история" ],
"published_at" : "2014-09-12T20:44:42+00:00"
}
}பதிலில் புதிய விசைகள் தோன்றின: _version и _source. பொதுவாக, அனைத்து விசைகளும் தொடங்கும் _ அதிகாரப்பூர்வமாக வகைப்படுத்தப்படுகின்றன.
முக்கிய _version ஆவணத்தின் பதிப்பைக் காட்டுகிறது. நம்பிக்கையான பூட்டுதல் பொறிமுறை வேலை செய்ய இது தேவை. எடுத்துக்காட்டாக, பதிப்பு 1 உள்ள ஆவணத்தை மாற்ற விரும்புகிறோம். மாற்றப்பட்ட ஆவணத்தைச் சமர்ப்பித்து, இது பதிப்பு 1ஐக் கொண்ட ஆவணத்தின் திருத்தம் என்பதைக் குறிப்பிடுகிறோம். பதிப்பு 1ஐக் கொண்ட ஆவணத்தை வேறு யாரேனும் திருத்தி, எங்களுக்கு முன் மாற்றங்களைச் சமர்ப்பித்தால், 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 க்கு சமமாக இருக்கும், அதாவது வடிப்பானுடன் முழுமையான பொருத்தம்.
பகுப்பாய்விகள்
மூல உரையை டோக்கன்களின் தொகுப்பாக மாற்ற வேண்டும்.
பகுப்பாய்விகள் ஒன்றைக் கொண்டிருக்கும் மற்றும் பல விருப்பங்கள் . டோக்கனைசருக்கு முன்னால் பல இருக்கலாம் . டோக்கனைசர்கள் மூல சரத்தை இடைவெளிகள் மற்றும் நிறுத்தற்குறிகள் போன்ற டோக்கன்களாக உடைக்கின்றன. டோக்கன்ஃபில்டர் டோக்கன்களை மாற்றலாம், புதியவற்றை நீக்கலாம் அல்லது சேர்க்கலாம், எடுத்துக்காட்டாக, வார்த்தையின் தண்டுகளை மட்டும் விட்டுவிடலாம், முன்மொழிவுகளை அகற்றலாம், ஒத்த சொற்களைச் சேர்க்கலாம். CharFilter - முழு மூல சரத்தையும் மாற்றுகிறது, எடுத்துக்காட்டாக, 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
} ]
}நிலையான பகுப்பாய்வி சரத்தை இடைவெளிகளால் பிரித்து எல்லாவற்றையும் சிறிய எழுத்தாக மாற்றியது, ரஷ்ய பகுப்பாய்வி முக்கியமற்ற சொற்களை அகற்றி, அதை சிறிய எழுத்தாக மாற்றி வார்த்தைகளின் தண்டை விட்டு வெளியேறியது.
ரஷ்ய பகுப்பாய்வி எந்த டோக்கனைசர், டோக்கன் ஃபில்டர்கள், சார்ஃபில்டர்களைப் பயன்படுத்துகிறது என்பதைப் பார்ப்போம்:
{
"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 இடுகைகளை இந்த குறியீட்டில் (blog2) சேர்ப்போம். இந்த செயல்முறையை நான் தவிர்க்கிறேன், ஏனென்றால்... இது வலைப்பதிவு குறியீட்டில் ஆவணங்களைச் சேர்ப்பது போன்றது.
வெளிப்பாடு ஆதரவுடன் முழு உரை தேடல்
மற்றொரு வகையான கோரிக்கையைப் பார்ப்போம்:
# найдем документы, в которых встречается слово 'истории'
# 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
