1. 程式人生 > >Elasticsearch 自動補齊建議

Elasticsearch 自動補齊建議

completion suggester

1.mapping

curl -XPUT 192.168.0.1:9200/person -d'  //新建一個persion的索引
{
"mappings": {
"person": { //這個是_type
"properties": {
"name": {
"type": "string"
}
"tag_suggest": {
"type": "completion", //設定為completion才能被suggest捕獲
"index_analyzer": "ik",
"search_analyzer": "ik",
"payloads": false

}
}
}
}
}'

2 .新增測試資料

curl -XPUT  192.168.2.20:9200/person/person/1 -d'
{
"name": [
"david",
"jacky"
],
"tag_suggest": {
"input": [
"david",
"jacky"
]
}
}'

curl -XPUT 192.168.0.1:9200/person/person/1 -d'
{
"name": [
"andy",
"jackson"
],
"tag_suggest": {
"input": [
"andy",
"jackson"
]
}
}'

3 DSL

curl -XPOST 192.168
.0.1:9200/person/_suggest -d'
{
"person_suggest":{
"text":"jack",
"completion": {
"field" : "tag_suggest"
}
}
}'

4 結果

{
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
}
,
"person_suggest": [
{
"text": "word",
"offset": 0,
"length": 4,
"options": [
{
"text": "jacky",
"score
": 1
},
{
"text": "jackson",
"score": 1
}
]
}
]
}

5.程式碼

    CompletionSuggestionBuilder completionSuggestionBuilder = new         
CompletionSuggestionBuilder("complete");
completionSuggestionBuilder.text(paramMap.get("text"));
completionSuggestionBuilder.field(paramMap.get("field"));
completionSuggestionBuilder.size(10);

IElasticsearchClient client = index.getIndexClient();
CompletionSuggestionBuilder completionSuggestion = completionSuggestionBuilder
SuggestResponse resp = client.prepareSuggest(realIndexName)
.addSuggestion(completionSuggestion).execute().actionGet();

List<? extends Suggest.Suggestion.Entry<? extends Suggest.Suggestion.Entry.Option>> list = response.getSuggest().getSuggestion("complete").getEntries();
List<String> suggestList = new ArrayList<String>();
if (list == null) {
return null;
} else {
for (Suggest.Suggestion.Entry<? extends Suggest.Suggestion.Entry.Option> e : list){
for (Suggest.Suggestion.Entry.Option option : e) {
suggestList.add(option.getText().toString());
}
}

相關推薦

(九)Elasticsearch自動建議-completion suggester

建立index -put http://localhost:9200/demo { "settings": { "analysis": { "an

Elasticsearch 自動建議

completion suggester 1.mapping curl -XPUT 192.168.0.1:9200/person -d' //新建一個persion的索引{"mapp

不錯的Elasticsearch in java 範例:自動功能(completion suggester)

https://www.programcreek.com/java-api-examples/index.php?api=org.elasticsearch.search.suggest.completion.Comp

Elasticsearch in java 範例:自動功能(completion suggester)

ES(elasticsearch)的suggester共有四類(term suggester, phrase suggester, completion suggester, context suggester), 其中completion suggeste

小技巧--tab鍵自動Git命令

ges spa dos sta 自動填充 git-flow -bash git blog Git是什麽,你不清楚? 好吧,那麽該篇內容對你也木有幫助,請繞道而行。。 我們在使用Git命令時,可以通過tab鍵,自動補齊Git,特別是在切換分支時特別有用。 如下,當我們想

shell介紹,命令歷史記錄,命令和文件名自動;通配符和輸入輸出重定向

數字 51cto ksh 開頭 chat inux shell images 重定向 shell介紹 Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。在計算機硬件之間還有一層東西——系統內核。如果把計算機硬件比作

AIX命令行實現自動功能

AIX命令行實現自動補齊功能如下兩種方法: 方法一:修改環境變量自動補齊實現方法(組合鍵):Esc + \實現步驟:步驟1:在 /etc/profile(所有用戶)或者 $HOME/.profile(特定用戶) 文件中增加如下內容:export EDITOR=vi步驟2:修改完如果想立刻生效,需要如下操作

VIM自動括號和引號

VIM補齊括號 VIM補齊引號 在~/.vimrc文件中追加以下內容: inoremap ( ()<ESC>iinoremap [ []<ESC>iinoremap { {}<ESC>iinoremap < <><ESC>iinorem

vim 自動提示、自動外掛 YouCompleteMe for windows Gvim 安裝及使用效果

YouCompleteMe is a fast, as-you-type, fuzzy-search(親~~支援模糊匹配哦) code completion engine for Vim. It has two completion engines: an identifier-based engi

mysql 命令自動功能

方法一、 vi /etc/my.cnf [mysql]  #no-auto-rehash  auto-rehash         #新增auto-rehash 重啟一下mysql服務

git自動

請參考官方的git-completion https://github.com/git/git/blob/master/contrib/completion/git-completion.bash   下面的東西就當我放了個屁!!!   參考:https:

Spket1.6.23在Eclipse下新增程式碼自動功能的配置:

一、Spket簡介 Spket是一個RIA的開發工具,具有程式碼自動完成、語法高亮、內容概要等功能,可以幫助開發人員高效的編寫JavaScript程式。 效果圖: 二、安裝Spket 1.去官網(http://www.spket.com/download.

使用VSCode編寫jsx程式碼時如何實現標籤自動

VSCode是kiddd最喜歡的編輯器,極簡而靈活,豐富而且繼續豐富著的外掛庫,配置簡單,都吸引著我。眾所周知,VSCode在編寫HTML程式碼時可以tab鍵自動補齊標籤。然而在編寫.jsx檔案的程式碼時,巢狀的標籤就無法享用一鍵補齊的優待了。 當然,如果這點

Android Studio XML佈局檔案設定程式碼自動快捷鍵

Android Studio XML佈局檔案中你會發現無法進行程式碼快捷鍵提示了,經過查詢發現: File -> Settings -> keymap  然後在收入框裡寫 Basic 我的是更改為Alt+反斜槓 然後右擊Basic的快捷鍵remove再新增你想

webstorm自動快捷鍵

快捷鍵tab 自動補全程式碼在webstorm IDEA sublime等開發工具下適用. 1, div + tab 自動補全成: <div></div> 2, di

各大搜索引擎智慧提示API(jsonp實現跨域自動建議)

---------------------------------------搜尋引擎JSONP介面--------------------------------------------- 提示:URL中的 #content# 為搜尋的 關鍵字 谷歌(Google)

PyCharm 2018.2 最新版 自動忽略大小寫

在設定最新版PyCharm 2018.2自動補齊忽略大小寫的時候出了點小插曲,記錄一下。 這個設定很多人記錄過,但是是舊版的,如: https://blog.csdn.net/qq_33733970/article/details/78425706 但是新版裡要這樣

Linux Shell--改變目錄/自動/命令列的歷史記錄/快捷鍵

改變目錄 ‘cd’(改變目錄,change directory) ‘~’就是您的 home 目錄的簡寫形式。理論上,這也可以應用在命令’cd’上。無論當前路徑在哪裡,cd ~ 將回到您的 home 目錄。其實還可以簡化,只要鍵入 cd ,就可以返回 ho

我的docker隨筆6:docker命令自動

背景 在筆者自己製作並安裝的ubuntu16.04系統上(參考筆者網站關於debootstrap的文章),無法使用docker自動補齊功能,即輸入docker命令後,按Tab鍵無法列出子命令(或引數)的候選項。於是在網上找了些資料,實現了這個功能,形成本文。

180807 16步Ubuntu下利用YouCompleteMe配置Anaconda+Vim自動tensorflow+keras+pytorch

參考部落格 安裝方法: Step-1:安裝vim:sudo apt-get install vim-gtk Step-2:檢視vim對python的支援:vim --version | grep python Step-3:安裝CMake:sudo