当前位置: 首页 > 面试题库 >

喜欢在Elasticsearch中搜索

许学真
2023-03-14
问题内容

我正在使用elasticsearch从json文件过滤和搜索,并且我是这项技术的新手。所以我有点困惑如何在elasticsearch中写像查询一样的东西。

select * from table_name where 'field_name' like 'a%'

这是mysql查询。如何在Elasticsearch中编写此查询?我正在使用Elasticsearch 0.90.7版。


问题答案:

如果可能的话,我强烈建议您更新ElasticSearch版本,自0.9.x版本以来发生了重大变化。

这个问题还不够具体,因为ElasticSearch可以通过多种方式实现此功能,并且它们在总体目标上略有不同。如果要完全复制该SQL查询,则在这种情况下,请使用通配符查询或前缀查询。

使用通配符查询:

注意:使用通配符搜索时要小心,它们很慢。避免在字符串开头使用通配符。

GET /my_index/table_name/_search
{
    "query": {
        "wildcard": {
            "field_name": "a*"
        }
    }
}

或前缀查询

GET /my_index/table_name/_search
{
    "query": {
        "prefix": {
            "field_name": "a"
        }
    }
}

或部分匹配:

注意:千万 不要 盲目使用部分匹配,同时也有极端案例以它的使用,正确使用分析仪几乎总是更好的。

同样,此确切的查询将等效于LIKE '%a%',这又可以通过正确使用映射和常规查询搜索来更好地设置!

GET /my_index/table_name/_search
{
    "query": {
        "match_phrase": {
            "field_name": "a"
        }
    }
}

如果您正在阅读有关以类似查询类型查询ES的信息,我建议您阅读edge-
ngrams
,这与根据您要尝试的操作正确使用映射有关=)



 类似资料:
  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了

  • 问题内容: 我当前的查询如下所示: 我环顾四周,找不到类似于LIKE IN()的东西-我认为它的工作方式如下: 有任何想法吗?我只是以错误的方式思考问题-一些我从未见过的晦涩命令。 MySQL 5.0.77-社区日志 问题答案: 一个REGEXP 可能 会更有效,但你必须对它进行基准测试,以确保,如

  • 帖子喜欢列表 帖子喜欢 帖子取消喜欢 帖子喜欢列表 GET /group-posts/:post/likes 参数 名称 类型 说明 limit integer 默认 15 ,数据返回条数 默认为15 after integer 默认 0 ,翻页标识。 响应 status 200 [ { "id": 152, "user_id": 1,// 攒点用户 "targe

  • 问题内容: 有谁知道哪个更快: 要么 问题答案: 2015年4月20日新增:请同时阅读以下Hallie的回答 第一个,但微不足道。主要是因为它不必进行额外的比较。