小编Adi*_*tya的帖子

Elasticsearch 通配符、regexp、match_phrase、前缀查询返回错误结果

我刚刚开始使用 Elasticsearch,版本 7.5.1。

我想查询以特定单词片段开头的结果。例如tho * 应该返回包含以下内容的数据:

思想,汤姆森,那些,等等。

我试过 -

  1. 正则表达式
[{'regexp':{'f1':'tho.*'}},{'regexp':{'f2':'tho.*'}}]
Run Code Online (Sandbox Code Playgroud)
  1. 通配符
[{'wildcard':{'f1':'tho*'}},{'wildcard':{'f2':'tho*'}}]
Run Code Online (Sandbox Code Playgroud)
  1. 字首
[{'prefix':{'f1':'tho'}},{'prefix':{'f2':'tho'}}]
Run Code Online (Sandbox Code Playgroud)
  1. 匹配短语
'multi_match': {'query': 'tho', 'fields':[f1,f2,f3], 'type':phrase}
# also tried with type phrase_prefix
Run Code Online (Sandbox Code Playgroud)

所有这些都返回正确的结果,但它们也都返回单词method

同样,cat * 返回了“ communication”这个词。

我做错了什么?这与分析器有关吗?

  • 编辑 - 这是字段映射 -
'f1': {
                'full_name': 'f1',
                'mapping': {
                    'f1': {
                        'type': 'text',
                        'analyzer': 'some_analyzer',
                        'index_phrases': true
                    }
                }
            },
Run Code Online (Sandbox Code Playgroud)

regex wildcard analyzer elasticsearch match-phrase

5
推荐指数
1
解决办法
82
查看次数

标签 统计

analyzer ×1

elasticsearch ×1

match-phrase ×1

regex ×1

wildcard ×1