首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elasticsearch查询帮助-找不到文档

elasticsearch查询帮助-找不到文档
EN

Stack Overflow用户
提问于 2018-09-27 08:07:10
回答 1查看 95关注 0票数 2

我有很多在elasticsearch中索引的文档。现在,我创建了一个查询,它找到了大量的文档--但他们没有找到文档--名称如下:"hello + friend“--如果我搜索hello --他们找到了文档,但是如果搜索真正的file.name "hello + friend”,他们就找不到了.我的问题出了什么问题?其他语言如中文的文件也是如此。

谢谢你的帮助

代码语言:javascript
复制
            $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 }

EN

回答 1

Stack Overflow用户

发布于 2018-09-27 13:23:30

从您的映射来看,您似乎使用了standard analyzer for file.name。因此,match查询应该适用于您。下面是一个例子:

代码语言:javascript
复制
PUT newindex/_doc/1
{
  "file.name": "hello + friend"
}

GET newindex/_doc/_search
{
  "query": {
    "match": {
      "file.name": "hello + friend"
    }
  }
}

standard analyzer将实际删除特殊字符。因此,如果你_analyze的“你好+朋友”这个词,你会看到它分裂成两个术语。

代码语言:javascript
复制
GET _analyze
{
  "text": ["hello + friend"],
  "analyzer": "standard"
}

结果:

代码语言:javascript
复制
{
  "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和一些通配符。

代码语言:javascript
复制
{
  "query": {
    "query_string": {
      "query": "*stangen*"
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52532299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档