elasticsearch (全)

目录

1、索引操作(增、删)

1.1 增加一条索引

1.2 查看索引下的数据(get接口)

1.3 删除索引

2、数据操作(增、删、改、bulk批量插入)

2.1 增加一条数据

2.2 修改数据

2.3 删除数据

2.4 bulk批量插入数据

3、数据查询(DSL语句)

3.1 match查询

3.2 multi_match查询

3.3 match_all查询

3.1 term过滤

3.2 terms过滤

3.3 range过滤

3.4 exists过滤和missing过滤

3.5 bool过滤

3.6 bool查询

3.7 统计功能


1、索引操作(增、删)

1.1 增加一条索引

res=es.index(index='my_index',doc_type='my_doc_type',body=doc)

或者

es.indices.create(index='my-index',ignore=400)
es.index(index='my_index',doc_type='my_doc_type',id=1,body{})    #增加一条

1.2 查看索引下的数据(get接口)

result=es.get(index='my_index',doc_type='my_doc_type',id=1)

1.3 删除索引

es.indices.delete(index='my_index')

2、数据操作(增、删、改、bulk批量插入)

2.1 增加一条数据

es.index(index='my_index',doc_type='my_doc_type',id=1,body{})

2.2 修改数据

有具体id的数据,直接使用update:

new_doc_body={}
es.update(index='my_index',id=1,body=new_doc_body)

或者使用update_by_query接口:

query={
    'query':{
            'match':{
                    'last_name':'xiao'
            }}}

result=es.update_by_query(index='my_index',body=query)

2.3 删除数据

有指定id,使用delete:

es.delete(index='my-index',doc_type='my_doc_type',id=1)

没有id,需要满足查询条件再删除,使用delete_by_query:

query={
        'query':{
                'match':{
                        'name':'xiao'}}}

result=es.delete_by_query(index='my_index',body=query)

2.4 bulk批量插入数据

actions参数传入数组的情况:

from elasticsearch import Elasticsearch
from elasticsearch import helpers
import random

client = Elasticsearch("localhost:9200")

levels = ['今天是个好日子', '中国万岁', '天安门广场', '现在在那里干嘛呢?']
actions = []

#构造模拟数据
for i in range(100):
    level = levels[random.randrange(0, len(levels))]
    action = {'_index': 'index',  # 操作 index update create delete  
              '_type': 'level,
              '_source': {'level': level}}
    actions.append(action)

# bulk批量插入
helpers.bulk(client=client,actions=actions)

actions参数传入一个生成器:

from elasticsearch import Elasticsearch
from elasticsearch import helpers
import random

client = Elasticsearch("localhost:9200")

levels = ['今天是个好日子', '中国万岁', '天安门广场', '现在在那里干嘛呢?']
actions = []

# 生成器
def gendata():
    for i in range(100):
        level = levels[random.randrange(0, len(levels))]
        action = {'_op_type': 'index',  # 操作 index update create delete  
                  '_index': 'level',
                  '_type': 'doc',
                  '_source': {'level': level}}
        yield action

# bulk批量插入
helpers.bulk(client=client,actions=gendata())

3、数据查询(DSL语句)

3.1 match查询

标准查询,用于对某个字段内某个值进行精确搜索:

query={
        'query':{
                'match':{
                        'about':'rock'
                }
        }
}

result=es.search(index='my_index',body=query)

3.2 multi_match查询

multi_match查询是在match查询的基础上同时搜索多个字段

query={
        'query':{
                'multi_match':{
                            'query':'music',
                            'fields':['about','interests']
                }
        }
}

result=es.search(index='my_index',body=query)

备注:这里fields指的是在about和interests这两个字段中搜索含有music这个单词的文档

3.3 match_all查询

查询所有的文档:

query={
        'query':{
                'match_all':{}
        }
}

result=es.search(index='my_index',body=query)

3.1 term过滤

主要用于精确匹配,使用search接口:

query = {
    "query": {
        "term":{
            'age': 32
        }
    }
}

result=es.search(index='my_index',body=query)

3.2 terms过滤

terms过滤与term过滤相似,但是terms过滤允许指定多个匹配条件。

query = {
    "query": {
        "terms":{
            'age': [32, 25]
        }
    }
}

result=es.search(index='my_index',body=query)

3.3 range过滤

按照指定的范围查找:

  • gt:大于
  • gte:大于等于
  • lt:小于
  • lte:小于等于
query = {
    "query": {
        "range":{
            'age': {
                "gt":34
            }
        }
    }
}

result=es.search(index='my_index',body=query)

3.4 exists过滤和missing过滤

  • exits过滤查找文档中是否含有某个字段
  • missing过滤查找文档中没有某个字段
query={
        'query':{
                  'exists':{
                            'field':'first_name'
    }
 }
}

result=es.search(index='my_index',body=query)

3.5 bool过滤

用于合并多个过滤条件:

  • must :多个条件必须同时满足,相当于and;
  • must_not:条件的对立面,相当于not;
  • should:至少有一个满足一个条件,相当于or。
query={
        'query':{
                'bool':{
                        'must':{
                                'term':{'_score':1},
                                 'term':{'age':32}
}}}}

result=es.search(index='my_index',body=query)

3.6 bool查询

bool查询与bool过滤相似,用于合并多个查询子句,不同的是bool过滤直接给出是否匹配成功,而bool查询要计算每一个查询子句的相关性分(_score):

query = {
    "query": {
         "bool": {
             "must": {
                 "match": { "last_name": 'Smith' }
                },
             "must_not":{
                 "exists":   {
                    "field":    "name"
                }
             }
        }
    }
}
result = es.search(index="my_index", body=query)

3.7 统计功能

如统计about字段中,含有I love这两个单词的文档数量,使用count接口:

query={
        'query':{
                'match_phrase':{
                            'about':'I love'
                            }
                }
    }

result=es.count(index='my_index',body=query)

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch 是一种开源的文搜索引擎,它可以帮助用户快速、准确地对网站中的所有内容进行搜索。作为一个站搜索引擎,Elasticsearch 可以处理大量的数据,并提供高性能的搜索功能。它支持通过倒排索引技术来高效地搜索文本内容,并且可以实时更新索引以保持数据的实时性。使用 Elasticsearch 可以实现对网站内容的文搜索,包括文章、博客、产品信息、用户评论等等。它提供了丰富的搜索功能,包括文搜索、模糊匹配、聚合搜索、过滤器搜索等,能够帮助用户快速地找到他们感兴趣的内容。 利用 Elasticsearch站搜索功能,用户可以轻松地在网站中进行文搜索,无论是在桌面端还是移动端都能够得到良好的搜索体验。而且,Elasticsearch 还支持多语言搜索,可以处理不同语言的文本内容,并提供相关性排名功能,帮助用户找到最相关的搜索结果。另外,Elasticsearch 还可以通过配置不同的分片和复制策略来实现可伸缩性和高可用性,确保搜索服务的稳定性和可靠性。 总的来说,Elasticsearch 站搜索功能强大而灵活,可以满足不同网站的搜索需求,帮助用户快速找到他们需要的信息,提升网站的用户体验,并且可以通过定制化的配置来满足不同场景的需求。因此,Elasticsearch 站搜索成为了许多网站和应用的首选搜索引擎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值