我有很多在elasticsearch中索引的文档。现在,我创建了一个查询,它找到了大量的文档--但他们没有找到文档--名称如下:"hello + friend“--如果我搜索hello --他们找到了文档,但是如果搜索真正的file.name "hello + friend”,他们就找不到了.我的问题出了什么问题?其他语言如中文的文件也是如此。
谢谢你的帮助
$params = [
'index' => 'search_dokumentation',
'type' => 'document',
'size' => 500,
'body' => [
'query' => [
'bool' => [
'should' => [
'wildcard' => [
'file.name' => '*' . strtolower($searchTerm) . '*',
],
],
'minimum_should_match' => 1,
],
],
'sort' => [
'_score' => [
'order' => 'asc',
],
],
],
"mappings": {"meta":{ "_all":{“已启用”:false },"last_modified":{“last_modified”:{“last_modified”:“日期”,“格式”:“yyy dd HH:mm:ss”},"update_date":{ "type":"text",“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 },"_all":{“_all”:{“已启用”:false },"_source":{“排除”:"file.content_base64“},”属性“:{”项目“:{”属性“:{”数字“:{”类型“:”关键字“} },"file":{ "content_base64":{ "type":"text“},"create_date":{ "type":"text",“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 } },“创建”:{“类型”:“日期”,“格式”:“yyy:mm:ss”},“扩展”:{ "type":“关键字”},"last_accessed":{ "type":"date","format":“yyy:mm:ss”},"last_modified":{“类型”:“日期”,“格式”:“yyy:mm:ss”},"link_file":{ "type":“关键字”},"link_folder":{ "type":"text",“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 } },“名称”:{“类型”:“文本”,“字段”:{“类型”:{“类型”:“文本”,“分析器”:"my_decompound“},”关键字“:{”类型“:”关键字“,"ignore_above":256 },“简单”:{“类型”:“文本”,“分析器”:“简单”} },"path_file":{“类型”:“关键字”},"path_folder":{“类型”:“关键字”},"path_folder_short":{“类型”:“关键字”},“权限”:{“类型”:"long“},“大小”:{“类型”:“长”},“版本”:{“类型”:“文本”,“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 },“关系”:{“属性”:{“机器”:{“类型”:“文本”,“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 } },“植物”:{“类型”:“文本”,“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 } },“类型”:{“类型”:“文本”,“字段”:{“关键字”:{“类型”:“关键字”,"ignore_above":256 }
发布于 2018-09-27 13:23:30
从您的映射来看,您似乎使用了standard analyzer for file.name。因此,match查询应该适用于您。下面是一个例子:
PUT newindex/_doc/1
{
"file.name": "hello + friend"
}
GET newindex/_doc/_search
{
"query": {
"match": {
"file.name": "hello + friend"
}
}
}standard analyzer将实际删除特殊字符。因此,如果你_analyze的“你好+朋友”这个词,你会看到它分裂成两个术语。
GET _analyze
{
"text": ["hello + friend"],
"analyzer": "standard"
}结果:
{
"tokens": [
{
"token": "hello",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "friend",
"start_offset": 8,
"end_offset": 14,
"type": "<ALPHANUM>",
"position": 1
}
]
}编辑:
对于将文件名"Betriebsanleitung_Schere + Stangenmagazin_V3.5.pdf“与部分匹配(术语”陌生“)匹配的用例,可以使用query_string和一些通配符。
{
"query": {
"query_string": {
"query": "*stangen*"
}
}
}https://stackoverflow.com/questions/52532299
复制相似问题