elasticsearch 父子文档(十一)
说明
需求 一个产品多个区域销售 每个区域有自己的价格,
方式1冗余行,a 产品分别在 area1 area2 area3区域销售 a产品就会生成3条产品数据 搜索id去重就行了,但是问题就是 聚合去重不支持 获得count 所以不能分页 只有选择假分页
方式2:父子关系 用于描述一对多管理 这里我采用方式2 产品为父文档 区域产品信息为子文档
6.*以下版本
创建索引
//put http://192.168.20.4:9200/lq_product_test
{
"mappings": {
"product": {}, //父文档 type name
"areaProductInfo": { //子文档type name
"_parent": {
"type": "product" //指定子文档的父文档typename
}
}
}
}
添加测试数据
1.插入文档
注意最后一个js有个\n换行符哦
//post http://192.168.20.4:9200/lq_product_test/product/_bulk
{ "index": { "_id": "1" }}
{"productId":1, "name": "产品1","sumSellCount":10}
{ "index": { "_id": "2" }}
{"productId":2, "name": "产品2","sumSellCount":11}
{ "index": { "_id": "3" }}
{"productId":3, "name": "产品3","sumSellCount":12}
2.插入子文档
http://192.168.20.4:9200/lq_product_test/areaProductInfo/1?parent=1
{
"id": 1,
"areaCode": 2,
"price": 20
}
http://192.168.20.4:9200/lq_product_test/areaProductInfo/2?parent=2
{
"id": 2,
"areaCode": 2,
"price": 30
}
get:http://192.168.20.4:9200/lq_product_test/_search
子文档查询
get:http://192.168.20.4:9200/lq_product_test/_search
包含有product父文档的所有子文档
{
"query":{
"has_parent":{
"parent_type":"product",
"query":{
"match_all":{}
}
}
}
}
父文档增加条件
{
"query":{
"has_parent":{
"parent_type":"product",
"query":{
"term":{"productId":1}
}
}
}
}
父子文档都增加条件
{
"query": {
"bool": {
"must": [{
"query": {
"term": {
"areaCode": 2
}
}
}, {
"has_parent": {
"parent_type": "product",
"query": {
"term": {
"productId": 1
}
}
}
}] }
}
}
function_score排序
{
"query": {
"function_score": {
"query": {
"has_parent": {
"parent_type": "product",
"query": {
"match_all": {}
}
}
},
"script_score": {
"script": "_score *sumSellCount"
}
}
}
}
elasticsearch 父子文档(十一)的更多相关文章
- elasticsearch父子文档处理(join)
elasticsearch父子文档处理 join 一.背景 二.需求 三.前置知识 四.实现步骤 1.创建 mapping 2.添加父文档数据 3.添加子文档 4.查询文档 1.根据父文档id查询它下 ...
- ES 父子文档查询
父子文档的特点 1. 父/子文档是完全独立的. 2. 父文档更新不会影响子文档. 3. 子文档更新不会影响父文档或者其它子文档. 父子文档的映射与索引 1. 父子关系 type 的建立必须在索引新建或 ...
- elasticsearch 路由文档到分片
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...
- ElasticSearch部署文档(Ubuntu 14.04)
ElasticSearch部署文档(Ubuntu 14.04) 参考链接 https://www.elastic.co/guide/en/elasticsearch/guide/current/hea ...
- ElasticSearch——原始文档和倒排索引
一.原始文档 如上图所示, 第二象限是一份原始文档,有title和content2个字段,字段取值分别为”我是中国人”和” 热爱共X产党”,这一点没什么可解释的.我们把原始文档写入Elasticsea ...
- 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念
一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...
- Elasticsearch 删除文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- Elasticsearch 更新文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- .Net Api 之如何使用Elasticsearch存储文档
.Net Api 之如何使用Elasticsearch存储文档 什么是Elasticsearch? Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据 ...
随机推荐
- FZU 2079 最大获利(线段树+DP)
Description Sean准备投资一些项目.有n个投资项目,投资第i个项目需要花费Ci元.Sean发现如果投资了某些编号连续的项目就能赚得一定的钱.现在给出m组连续的项目和每组能赚得的钱,请问采 ...
- Neo4j-Cypher查询语言-函数
断言函数(Predicate functions) 函数名称 函数说明 ALL(identifier in collection WHERE predicate) 判断一个断言(predicate) ...
- java全栈商业小程序开发
此次开发只为学习和巩固,第一次学习开发 一.开发前需要了解: 开发框架MVVM.痛点.开源工具.VUE前端框架.微信支付模块.uni-app前端框架.小程序申请.开发工具下载.编写测试小程序.小程序结 ...
- 2018-8-10-win10-UWP-ListView-
title author date CreateTime categories win10 UWP ListView lindexi 2018-08-10 19:16:53 +0800 2018-2- ...
- shell变量替换扩展 字符串计数截取
- MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC
总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concur ...
- delphi 数据处理
TStringStream 怎样转换String procedure TForm1.Button1Click(Sender: TObject); var ss:TStringStream; str:S ...
- AcWing 138. 兔子与兔子 hash打卡
很久很久以前,森林里住着一群兔子. 有一天,兔子们想要研究自己的 DNA 序列. 我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母). 然后我们每 ...
- MAC OpenGL 环境搭建
MAC OpenGL 环境搭建 基础库介绍 先要安装两个库一个是GLEW(OpenGL Extension Wrangler Library),另外一个是GLFW(Graphics Library F ...
- tomcat 相关异常
端口没有被占用却提示Several ports (8005, 8080, 8009) required by Tomcat??? 解决办法:1.运行cmd进入命令行界面:2.运行命令: netsh w ...