Python操作Elasticsearch中对字段进行模糊查询

Elasticsearch进行模糊匹配

全文搜索:
    每个自字符串都需要被分词,形成倒排索引
    mastch性能比较高:扫描倒赔索引(表)一旦扫描不到便不需要再搜索
前言:
    下面的性能都比较差,属于能不用就不用的类型

前缀搜索

扫描到了,还会继续搜索,知道扫描完整个倒排索引
 ```
 GET my_index/my_type/_search
    {
      "query": {
        "prefix": {
          "title": {
            "value": "C3"
          }
        }
      }
    }
 ```

通配符搜索

? 一个字符
* 任意个字符
```
GET my_index/my_type/_search
    {
      "query": {
        "wildcard": {
          "title": {
            "value": "*5*5"
          }
        }
      }
    }
```

正则表达式:

[0-9]   :   指定范围内的数字
[a-z]   :   范围内的字母
.   :   一个字符
+   :   前面的正则可以出现一次或多次
```
GET /my_index/my_type/_search
    {
      "query": {
        "regexp":{
          "title":"C[0-9].+"
        }
      }
    }
```

通配符和正则表达式查询

wildcard查询和prefix查询类似,也是一个基于词条的低级别查询,
但是它能够让你制定一个模式(Pattern),而不是一个前缀(Prefix)
,它使用标准的shell通配符: ? 来匹配任意字符,* 用来匹配零个或者多个字符.
示例:
    es = Elasticsearch(hosts="218.22.29.213", port=9200, timeout=200)
    query1 = {"query": {"wildcard": {"crossroadName": "*宿州路*"}}}
    query = es.search(index="hefei_crossroad", doc_type="info", body=query1)
    value = query["hits"]["hits"]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容