| 查询|| - -|| 我叫什么名字|| 什么是谷歌|| 什么是堆栈溢出|| 如何搜索|所以,我想有一个ElasticSearch索引,其中有如上所述的文档。我想获取所有的结果,前缀匹配的查询。例如,当查询“什么是”,我需要{“什么是我的名字”,“什么是谷歌”,“什么是stackoverflow”}作为结果,确切的前缀匹配。如何开始创建索引?如果可能,还可以创建示例查询。先谢谢你。
42fyovps1#
有multiple ways来实现你想要的,但最简单的是使用prefix query,如果你只是把你的数据直接索引到Elasticsearch而不定义Map,它会自动为你创建两个字段,并且在.keyword字段上你可以使用如下所示的前缀查询。
.keyword
索引示例文档
PUT <your-es-index>/_doc/1 { "title" : "what is my name" } PUT <your-es-index>/_doc/2 { "title" : "what is google" } PUT <your-es-index>/_doc/3 { "title" : "what is stackoverflow" } PUT <your-es-index>/_doc/4 { "title" : "how to search" }
搜索查询
POST /搜索(_S)
{ "query": { "prefix": { "title.keyword": { "value": "what is" } } } }
您预期的搜索结果
"hits": [ { "_index": "72391510", "_id": "1", "_score": 1.0, "_source": { "title": "what is my name" } }, { "_index": "72391510", "_id": "2", "_score": 1.0, "_source": { "title": "what is google" } }, { "_index": "72391510", "_id": "3", "_score": 1.0, "_source": { "title": "what is stackoverflow" } }
1条答案
按热度按时间42fyovps1#
有multiple ways来实现你想要的,但最简单的是使用prefix query,如果你只是把你的数据直接索引到Elasticsearch而不定义Map,它会自动为你创建两个字段,并且在
.keyword
字段上你可以使用如下所示的前缀查询。索引示例文档
搜索查询
POST /搜索(_S)
您预期的搜索结果