【问题标题】:Elasticsearch doesn't give output I expectElasticsearch 没有给出我期望的输出
【发布时间】:2016-02-19 09:28:31
【问题描述】:

我的搜索查询是:

query: {
  match: {
    name: "le sul"
  }
},

我希望看到的输出为:

.-------------------------------------------------.
|  ID   |            Name             |   Score   |
|-------|-----------------------------|-----------|
| 9     | le sultan                   | ...       |
| 467   | le sultan                   | ...       |
| 23742 | LE DUONG                    | 1.1602057 |
| 11767 | LE VICTORIA                 | 0.9554229 |
| 11758 | LE CANONNIER                | 0.9554229 |
| 23762 | PHA LE XANH                 | 0.9281646 |
| 15795 | LE SURCOUF HOTEL & SPA      | 0.9281646 |
| 33066 | LE CORAL HIDEAWAY BEYOND    | 0.8695703 |
| 11761 | LE MERIDIEN MAURITIUS       | 0.8682439 |
| 11871 | LE RELAX HOTEL & RESTAURANT | 0.8682439 |
'-------------------------------------------------'

但我看到的是:

.-------------------------------------------------.
|  ID   |            Name             |   Score   |
|-------|-----------------------------|-----------|
| 23742 | LE DUONG                    | 1.1602057 |
| 9     | le sultan                   | 1.0869629 | <----
| 11767 | LE VICTORIA                 | 0.9554229 |
| 11758 | LE CANONNIER                | 0.9554229 |
| 467   | le sultan                   | 0.9554229 | <----
| 23762 | PHA LE XANH                 | 0.9281646 |
| 15795 | LE SURCOUF HOTEL & SPA      | 0.9281646 |
| 33066 | LE CORAL HIDEAWAY BEYOND    | 0.8695703 |
| 11761 | LE MERIDIEN MAURITIUS       | 0.8682439 |
| 11871 | LE RELAX HOTEL & RESTAURANT | 0.8682439 |
'-------------------------------------------------'

如您所见,“le sultan”不是结果集中的第一个元素。

我哪里错了?

【问题讨论】:

  • 您使用的是哪种分析仪?
  • @IrmakCakmak 我正在使用默认分析器。

标签: search elasticsearch full-text-search


【解决方案1】:
Your query result is not match because elasticsearch search via _score.

In your case you want to search in an analyzed search and get result in not analyzed.

So you should put your mapping like given  below 


Put your_index_name
{
   "mappings": {
      "your_type_name": {
           "properties": {
         "name": {
            "type": "string",
            "analyzer": "english",
            "fields": {
               "your_temporary_sort_filed_name": {
                  "type": "string",
                  "index": "not_analyzed"
               }
            }
         }
      }
    }
   }
}

And then

GET /your_index_name/your_type_name/_search
{
  "sort": [
     {
        "name.your_temporary_sort_filed_name":{
            "order": "desc"
        }
     }
  ], 
    "query": {
        "match": {
           "name": "le sul"
        }
    }
}

【讨论】:

    【解决方案2】:

    如果您想获取le sultan,请使用以下查询:

    {
    
    "query": {
      "query_string": {
         "default_field": "name",
          "query": "le sul*"
         }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多