首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对Elasticsearch建议的结果进行排序?

如何对Elasticsearch建议的结果进行排序?
EN

Stack Overflow用户
提问于 2015-07-29 17:05:21
回答 1查看 582关注 0票数 1

我正在使用Elasticsearch suggest函数。我想对结果进行排序。

例如,我想将这些数据索引到Elasticsearch。

代码语言:javascript
复制
| itemname  | total_pv  |
| Apple     | 100       |
| Lemon     | 200       |
| Orange    | 50        |
| Banana    | 120       |
| Lime      | 100       |

当用户在输入标记中输入"L“时,我希望将结果排序为"total_pv”。在这种情况下,顺序"Lemon","Lime“就是我想要的。

如果我把它写成SQL,意思也是一样的。

代码语言:javascript
复制
SELECT itemname FROM sometable WHERE itemname LIKE 'L%' ORDER BY total_pv DESC

我已经尝试在下面的请求中建立索引,但是当我使用单词"L“请求Elasticsearch时,我无法得到正确的答案。

代码语言:javascript
复制
{ "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"}

索引设置如下所示。

代码语言:javascript
复制
{
  "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"
        }
      }
    }
  }
}

然后搜索查询是这样的。

代码语言:javascript
复制
{
  "index": "ss_suggest",
  "body": {
    "keyword": {
      "text": "L",
      "completion": {
        "field": "suggest"
      }
    }
  }
}

有人能告诉我怎么做吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-07-31 16:07:15

我知道答案了。格式应该是这样的。

代码语言:javascript
复制
{ "index" : { "_index" : "ss_suggest", "_type" : "keyword", "_id" : "8120" } }    
{ "suggest" : { "input" : "Apple", "weight" : "100" } }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31695931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档