当前位置: 首页 > 知识库问答 >
问题:

ElasticSearch完成提示-不返回数据

邓翼
2023-03-14

你能帮我做一下ElasticSearch吗?建议:https://www.elastic.co/guide/en/ElasticSearch/reference/5.1/search-suggesters-completion.html

  1. 我在ES索引中创建了类型

curl-xput“localhost:9200/tass_suggest_test/_mapping/company?pretty”-h“content-type:application/json”-d“

{
   "company": {
            "properties": {
                "id": {
                    "type": "integer"
                },
                "inn": {
                    "type": "keyword"
                },
                "innSuggest" : {
                    "type" : "completion"
                }
            }
        }
}
'

填充了一些数据

curl-xget“http://localhost:9200/tass_suggest_test/company/_search?pretty”-d“

{
    "from" : 0, "size" : 1,
    "query" : { 
        "wildcard" : { "inn" : "78200*" }
    }
}'

没事,我得到了一些数据:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 10,
    "successful" : 10,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "tass_suggest_test",
        "_type" : "company",
        "_id" : "23515589",
        "_score" : 1.0,
        "_source" : {
          "id" : 23515589,
          "inn" : "7820056885",
          "innSuggest" : "7820056885"
        }
      }
    ]
  }
}

但当我尝试建议查询时,我什么也没有得到

curl -XGET 'localhost:9200/tass_suggest_test/_suggest?pretty' -H 'Content-Type: application/json' -d'
{
    "company-suggest" : {
        "prefix" : "78200",
        "completion" : {
            "field" : "innSuggest"
        }
    }
}
'

{
  "_shards" : {
    "total" : 10,
    "successful" : 10,
    "failed" : 0
  },
  "company-suggest" : [
    {
      "text" : "7820056885",
      "offset" : 0,
      "length" : 10,
      "options" : [ ]
    }
  ]
}

我的错在哪里?

共有1个答案

夹谷衡
2023-03-14

完成提示器默认使用简单分析器,因此从输入字段中删除了数字。如果要保留数字,可以使用建议字段的空格分析器:

{
   "company": {
            "properties": {
                "id": {
                    "type": "integer"
                },
                "inn": {
                    "type": "keyword"
                },
                "innSuggest" : {
                    "type" : "completion",
                    "analyzer": "whitespace"
                }
            }
        }
}
 类似资料:
  • 问题内容: 我对Elasticsearch还是很陌生,目前正试图在分析仪方面着手研究 我有一个这样的地方列表: London The London Eye The London Dungeon etc… 通过将完成提示的映射设置为以下内容: 现在,当建议者文本输入只是字母时,我就可以返回上述所有三个建议 但是,我希望在用户键入单词时返回,并且在用户键入时也返回(当然,这些术语的任何前缀) 在今天的

  • 我正在使用Spark(Java)读取和写入DB。我正在使用Spark的内置集群管理器。该应用程序是作为胖罐的捆绑包,并通过Spark提交命令运行: 任务运行正常,应用程序日志中没有异常,或者在命令行上发出spark submit时也没有异常。以下是运行spark submit的整个标准输出: /spark提交——com类。tte公司。地点部门每日的主要的驱动程序--主spark://ip-xxx-

  • 问题内容: 我是PL / SQL的初学者,正在尝试一些sql脚本,但是有时我的脚本中有错误,并且没有出现提示;我仍然处于输入模式。 如何在不关闭终端的情况下检索提示? (ps:我在Ubuntu OS下为oracle 11g使用sql plus) 问题答案: 从文档中 SQL * Plus以与SQL命令相同的方式对待PL / SQL子程序,除了分号(;)或空白行不会终止并执行块之外。通过在新行上单独

  • 这三个函数的返回类型提示有什么不同吗? 他们都应该有< code>- 提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。

  • 问题内容: ElasticSearch 5.x对Suggider API(文档)进行了一些(重大)更改。最值得注意的变化如下: 完成建议器面向文档 建议知道它们所属的文档。现在,关联文档()作为完成建议的一部分返回。 简而言之,所有完成查询都返回所有匹配的 文档, 而不是匹配的 word 。这里存在一个问题-如果在多个文档中出现自动完成的单词,则重复它们。 假设我们有一个简单的映射: 带有一些测试

  • 问题内容: 搜索时,Elasticsearch返回包含各种元信息的数据结构。 实际结果集包含在从数据库返回的JSON结果内的“ hits”字段中。 Elasticsearch是否有可能仅返回所需的数据(然后是“ hits”字段的内容)而没有嵌入所有其他元数据中? 我知道我可以将结果解析为JSON并提取出来,但是我不希望复杂性,麻烦和性能下降。 谢谢! 这是Elasticsearch返回的数据结构的