我正在使用Elasticsearch suggest函数。我想对结果进行排序。
例如,我想将这些数据索引到Elasticsearch。
| itemname | total_pv |
| Apple | 100 |
| Lemon | 200 |
| Orange | 50 |
| Banana | 120 |
| Lime | 100 |当用户在输入标记中输入"L“时,我希望将结果排序为"total_pv”。在这种情况下,顺序"Lemon","Lime“就是我想要的。
如果我把它写成SQL,意思也是一样的。
SELECT itemname FROM sometable WHERE itemname LIKE 'L%' ORDER BY total_pv DESC我已经尝试在下面的请求中建立索引,但是当我使用单词"L“请求Elasticsearch时,我无法得到正确的答案。
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "8120" } }
{ "suggest" : "Apple", "weight" : "100"}
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "8020" } }
{ "suggest" : "Lemon", "weight" : "200"}
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "8021" } }
{ "suggest" : "Orange", "weight" : "50"}
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "8110" } }
{ "suggest" : "Banana", "weight" : "120"}
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "4080" } }
{ "suggest" : "Lime", "weight" : "100"}索引设置如下所示。
{
"settings": {
"analysis": {
"filter": {
"katakana_stemmer": {
"type": "kuromoji_stemmer"
},
"katakana_readingform" : {
"type" : "kuromoji_readingform",
"use_romaji" : false
}
},
"tokenizer": {
"kuromoji_tokenizer": {
"type": "kuromoji_tokenizer",
"mode":"search",
"user_dictionary": "user_dict.txt"
}
},
"analyzer": {
"kuromoji_analyzer": {
"type":"custom",
"tokenizer":"kuromoji_tokenizer",
"char_filter":["html_strip", "kuromoji_iteration_mark", "icu_normalizer"],
"filter": ["lowercase", "cjk_width", "katakana_stemmer", "kuromoji_part_of_speech", "kuromoji_baseform", "katakana_readingform"]
}
}
}
},
"mappings": {
"keyword": {
"properties": {
"suggest": {
"type": "completion",
"index_analyzer": "kuromoji_analyzer",
"search_analyzer": "kuromoji_analyzer"
}
}
}
}
}然后搜索查询是这样的。
{
"index": "ss_suggest",
"body": {
"keyword": {
"text": "L",
"completion": {
"field": "suggest"
}
}
}
}有人能告诉我怎么做吗?
谢谢。
发布于 2015-07-31 16:07:15
我知道答案了。格式应该是这样的。
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "8120" } }
{ "suggest" : { "input" : "Apple", "weight" : "100" } }https://stackoverflow.com/questions/31695931
复制相似问题