我正在寻找ElasticSearch查询,它将在其中包含空格的字符串上提供完全匹配.
例如 - 我想搜索像'XYZ Company Solutions'这样的词.我尝试了查询字符串查询但它给了我所有的记录,无论搜索结果如何.我也读了帖子,发现我们必须为该字段添加一些映射.我在球场上尝试了'Not_Analyzed'分析仪,但它仍无法正常工作.
如果有人有完整的示例或步骤,那么请您与我分享?
提前致谢.
谢谢,Sameer
由于你没有发布你的代码,很难分辨出什么是错的,但"index": "not_analyzed"在你的映射中是处理这个问题的正确方法.
这是一个简单的工作示例.首先,我创建一个使用的映射"index": "not_analyzed":
PUT /test_index
{
"mappings": {
"doc": {
"properties": {
"name":{
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后添加几个文档进行测试
POST /test_index/doc/_bulk
{"index":{"_id":1}}
{"name":"XYZ Company Solutions"}
{"index":{"_id":2}}
{"name":"Another Company"}
Run Code Online (Sandbox Code Playgroud)
现在我可以使用简单的术语查询获取我想要的文档:
POST /test_index/doc/_search
{
"query": {
"term": {
"name": {
"value": "XYZ Company Solutions"
}
}
}
}
...
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "test_index",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"name": "XYZ Company Solutions"
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用来测试它的代码:
http://sense.qbox.io/gist/90fcc7f7a88d58f098c50d5aaf0315fdf06e9e9a
| 归档时间: |
|
| 查看次数: |
12417 次 |
| 最近记录: |