search - Elasticsearch没有给出我期望的输出

标签 search elasticsearch full-text-search

我的搜索查询是:

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 sul tan”不是结果集的第一个元素。

我要去哪里错了?

最佳答案

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"
        }
    }
}

关于search - Elasticsearch没有给出我期望的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35501745/

相关文章:

elasticsearch - Elasticsearch geo_distance过滤器-距离单位设置为km,但似乎以米为单位进行计算

elasticsearch - Elasticsearch 词组完全匹配,无需分析

regex - Eclipse文件搜索正则表达式操作

mysql - 有趣的 MATCH AGAINST 问题 : not searching some words

javascript - 添加高级搜索数据

javascript - 实现快速 Javascript 搜索?

java - Elasticsearch Rest 客户端仍然给出 IOException : Too Many Open Files

elasticsearch - Elasticsearch排除不符合条件的文档

algorithm - 未知大小数组的二进制搜索

java - Netbeans:有没有一种方法可以模仿 Eclipse CTRL+H 在 JRE 和应用程序库中查找用法?