文档章节

Elasticsearch06结构化搜索

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:18
字数 417
阅读 4
收藏 0

准备数据

创建索引(仅含映射)
# -.- coding:utf-8 -.-
# 准备数据
# 产品编号productID不希望被模糊搜索,
# 所以在定义mapping结构时, 声明了index="not_analyzed"
from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

es.indices.create(
    index="my_store",
    body={
        "mappings": {
            "products": {
                "properties": {
                    "price": {
                        "type": "integer"
                    },
                    "productID": {
                        "type": "string",
                        "index": "not_analyzed"
                    }
                }
            }
        }
    }
)
写入数据
# -.- coding:utf-8 -.-
from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.bulk(
    index="my_store",
    doc_type="products",
    body=[
        {"create": {"_id": 1}},
        {"price": 10, "productID": "XHDK-A-1293-#fJ3"},
        {"create": {"_id": 2}},
        {"price": 20, "productID": "KDKE-B-9947-#kL5"},
        {"create": {"_id": 3}},
        {"price": 30, "productID": "JODL-X-1937-#pV7"},
        {"create": {"_id": 4}},
        {"price": 30, "productID": "QQPX-R-3956-#aD8"},
    ]
)

pprint(s)

 

结构化搜索

SQL:
select * from products where price = 20;

from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.search(
    index="my_store",
    doc_type="products",
    body={
        "query": {
            "constant_score": {
                "filter": {
                    "term": {
                        "price": 20
                    }
                }
            }
        }
    }
)

pprint(s)

 

SQL:
select * from products where price=20 or price=30;

from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.search(
    index="my_store",
    doc_type="products",
    body={
        "query": {
            "constant_score": {
                "filter": {
                    "terms": {"price": [20, 30]}
                }
            }
        }
    }
)

pprint(s)

 

SQL:
select * from products where productID="XHDK-A-1293-#fJ3";

from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.search(
    index="my_store",
    doc_type="products",
    body={
        "query": {
            "constant_score": {
                "filter": {
                    "term": {
                        "productID": "XHDK-A-1293-#fJ3"
                    }
                }
            }
        }
    }
)

pprint(s)

 

SQL:
select * from products
where (price = 20 or productID="XHDK-A-1293-#fJ3")
and (price != 30);

from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.search(
    index="my_store",
    doc_type="products",
    body={
        "query": {
            "constant_score": {
                "filter": {
                    "bool": {
                        "should": [
                            {"term": {"price": 20}},
                            {"term": {"productID": "XHDK-A-1293-#fJ3"}}
                        ],
                        "must_not": {
                            "term": {"price": 30}
                        }
                    }
                }
            }
        }
    }
)

pprint(s)

 

SQL:
select * from products
where productID="KDKE-B-9947-#kL5"
or (productID="JODL-X-1937-#pV7" and price = 30);

from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.search(
    index="my_store",
    doc_type="products",
    body={
        "query": {
            "constant_score": {
                "filter": {
                    "bool": {
                        "should": [
                            {"term": {"productID": "KDKE-B-9947-#kL5"}},
                            {"bool": {
                                "must": [
                                    {"term": {"productID": "JODL-X-1937-#pV7"}},
                                    {"term": {"price": 30}}
                                ]
                            }}
                        ]
                    }
                }
            }
        }
    }
)

pprint(s)

 

SQL:
select * from products where price between 20 and 40;

from elasticsearch import Elasticsearch
from pprint import pprint

es = Elasticsearch(hosts=["192.168.1.132"])

s = es.search(
    index="my_store",
    doc_type="products",
    body={
        "query": {
            "constant_score": {
                "filter": {
                    "range": {
                        "price": {
                            "gte": 20,
                            "lte": 40,
                        }
                    }
                }
            }
        }
    }
)

pprint(s)

 

参考

本文转载自:http://www.jianshu.com/p/f53106b42e51

共有 人打赏支持
上一篇: rust02语法
下一篇: nsq01介绍
AllenOR灵感
粉丝 11
博文 2635
码字总数 83001
作品 0
程序员
私信 提问
帮您分析非结构化数据的 10 个实用步骤

  【IT168 导购】数据分析正在成为企业发展的重要部分。对于企业来说,了解结构化和非结构化数据是非常有必要的,以便为业务发展做出正确的决策。 下面的10个步骤将帮助企业来成功的分析非...

it168网站
2017/11/03
0
0
通过使用结构化数据 JSON-LD,我为网站带来了更多的流量

摘要:最近,我尝试在『玩点什么』网站上,引入了 AMP、APP Indexing,以及结构化数据 JSON-LD。其中 JSON-LD 的效果,最令人惊艳。结构化数据,简单的来说,就是我们告诉 Google 里面拥有什...

phodal
2017/12/22
0
0
2年ETL经验,杭州值个什么价钱?

外企2年,一直用的Informatica,本科软件工程,有Java项目经验,Oracle Perl Unix shell熟悉,英语还过得去,口语 写作问题不大。 现在在用非结构化数据搜索。想换个地方,做ETL或非结构化搜...

theboy
2013/09/11
1K
14
结构化数据的搜索引擎--Argos

Argos是一个结构化数据的搜索引擎。 它不仅包含全文搜索引擎的功能,还针对结构化数据搜索提供了丰富的支持。 Argos很大程度是是基于我在eBay的主要项目Voyager以其后续项目Cassini的一个开源...

Windoze
2012/08/20
726
0
UIMA分析引擎--UIMA Java

UIMA Java 框架产生的目的是为了构建一个 UIMA 兼容的 Java 分析引擎。 UIMA 是非结构化信息管理体系结构(Unstructured Information Management Architecture,UIMA)在字处理文档、电子邮件...

匿名
2008/12/31
2.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

MaxCompute安全管理指南-基础篇

背景及目的 方便和辅助MaxCompute的project owner或安全管理员进行project的日常安全运维,保障数据安全。 MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而...

阿里云官方博客
7分钟前
0
0
MaxCompute安全管理指南-案例篇

通过《MaxCompute安全管理-基础篇》了解到MaxCompute和DataWorks的相关安全模型、两个产品安全方面的关联,以及各种安全操作后,本篇主要给出一些安全管理案例,给安全管理的成员作为参考。 ...

阿里云云栖社区
9分钟前
0
0
show-busy-java-threads.sh

#!/bin/bash# @Function# Find out the highest cpu consumed threads of java, and print the stack of these threads.## @Usage# $ ./show-busy-java-threads## @online-d......

月下狼
14分钟前
0
0
基于Spring Boot和Spring Cloud实现微服务架构

前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道。因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易...

架构师springboot
14分钟前
0
0
远程图片上传到七牛云的demo

from qiniu import Auth, BucketManager# 抓取文件到七牛def fetch(url): filename = str(time.time()).replace('.', '') # 获取鉴权对象 auth = Auth(access_key, secre......

Liens
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部