说明

需求 一个产品多个区域销售 每个区域有自己的价格,

方式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 父子文档(十一)的更多相关文章

  1. elasticsearch父子文档处理(join)

    elasticsearch父子文档处理 join 一.背景 二.需求 三.前置知识 四.实现步骤 1.创建 mapping 2.添加父文档数据 3.添加子文档 4.查询文档 1.根据父文档id查询它下 ...

  2. ES 父子文档查询

    父子文档的特点 1. 父/子文档是完全独立的. 2. 父文档更新不会影响子文档. 3. 子文档更新不会影响父文档或者其它子文档. 父子文档的映射与索引 1. 父子关系 type 的建立必须在索引新建或 ...

  3. elasticsearch 路由文档到分片

    路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...

  4. ElasticSearch部署文档(Ubuntu 14.04)

    ElasticSearch部署文档(Ubuntu 14.04) 参考链接 https://www.elastic.co/guide/en/elasticsearch/guide/current/hea ...

  5. ElasticSearch——原始文档和倒排索引

    一.原始文档 如上图所示, 第二象限是一份原始文档,有title和content2个字段,字段取值分别为”我是中国人”和” 热爱共X产党”,这一点没什么可解释的.我们把原始文档写入Elasticsea ...

  6. 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念

    一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...

  7. Elasticsearch 删除文档

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  8. Elasticsearch 更新文档

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  9. .Net Api 之如何使用Elasticsearch存储文档

    .Net Api 之如何使用Elasticsearch存储文档 什么是Elasticsearch? Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据 ...

随机推荐

  1. 【Movie】绿皮书

    今天和室友一起去看了<绿皮书>,一部获得奥斯卡的电影. 起初我是没什么太大期望的,纯粹是因为特价票10块钱,加上身边一个小姐姐的力荐. 看完我觉得,啊不愧是奥斯卡电影啊.推荐. 以下可能会 ...

  2. ubuntu中搭建基本的开发环境

    1.搭建基本开发环境: sudo apt-get install build-essential 2.安装语法.词法分析器 sudo apt-get install bison flex 3.安装C函 ...

  3. shell变量替换扩展 变量测试

  4. Mac下homebrew的安装与卸载

    mac系统常用的软件安装工具就是homebrew 个人认为通过brew安装比较简单,下面介绍下如何安装 安装和卸载homebrew 安装 /usr/bin/ruby -e "$(curl - ...

  5. input | button | textarea 元素的checked, disabled,hidden属性控制

    这三种元素涉及到的checked, disabled,hidden属性的控制方法如下 一.attribute方法: //以下3行,都会影响HTML的( checked | disabled | hid ...

  6. Oracle数据库中文乱码问题解决

    1.查看服务器端编码select userenv('language') from dual;我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK 2.执行语句 select * f ...

  7. vs code 自定义代码片段

    1.快捷键Ctrl+Shift+P打开命令输入 snippet : (也可以点击文件=>首选项=>用户代码片段) 2.选择代码语言类型(这里以JavaScrpt为例) 3.在javascr ...

  8. AcWing 286. 选课 (树形依赖分组背包)打卡

    有依赖的背包 首先依赖的概念,就是一个东西依附与一个东西之上,我们想买附品的话必须要把主品先买下来,这个可以先做下这道题 https://www.cnblogs.com/Lis-/p/11047466 ...

  9. JS中的call()、apply() 以及 bind()方法用法总结

    JS中的call()方法和apply()方法用法总结  : 讲解: 调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域. function add(c,d){ return thi ...

  10. Extjs各版本的下载链接,包含ext3.4源码示例

    最近在维护一个老平台,用的是ext3.4,老东西在网上找示例发现既然还有人收钱,谷歌了一下总算找到了一位免费的发布的,感谢 yipanbo 分享 Extjs的版本繁多,本文收集了Extjs各个版本的下 ...