栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何通过键值对elasticsearch数组中的键匹配数组值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何通过键值对elasticsearch数组中的键匹配数组值?

让我们开始吧:

  1. 您似乎错误地映射了嵌套路径,它
    oracle_props
    db
    示例文档中的子项,而不是映射中的子项,在映射中它直接显示为根的子项。
  2. 您将映射
    oracle_props.@value
    long
    ,但
    Y
    CREATE_PERMISSION
    嵌套文档中为其分配了文本
  3. 您查询
    range lt 4000
    ,但 不包括 4000,
    lte
    适合您

我没有得到您要求的缺失值,因此我跳过了它。

为了使您走上正确的道路,我必须对它进行一些简化(因为我无法完全理解问题中的所有问题,对不起)

我也不打算进行渗透,而是将所有内容重命名为twitter / tweet,因为这对于我从示例中复制而言更容易。

1)创建空索引“ twitter”

curl -XDELETE 'http://localhost:9200/twitter/'curl -XPUT 'http://localhost:9200/twitter/'

2)为实际的“ tweet”创建geo_point映射

curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '{    "tweet": {        "properties": { "db": {     "type": "object",     "properties": {         "@type": {  "type": "string"         },         "oracle_props": {  "type": "nested",  "properties": {      "@name": {          "type": "string"      },      "@value": {          "type": "string"      }  }         }     } }        }    }}'

3)让我们检查一下是否设置了映射

curl -XGET 'http://localhost:9200/twitter/tweet/_mapping?pretty=true'

4)发布一些带有嵌套数据的推文

curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{    "name": "Athena",    "version": 1,    "db": {        "@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",        "oracle_props": [ {     "@name": "open_cursors",     "@value": 4000 }, {     "@name": "USER_ROLE_PRIVS_COUNT",     "@value": 1 }, {     "@name": "CREATE_PERMISSION",     "@value": "Y" }        ]    }}'

5)仅嵌套查询

curl -XGET localhost:9200/twitter/tweet/_search -d '{    "query": {        "nested" : { "path" : "db.oracle_props", "score_mode" : "avg", "query" : {     "bool" : {         "must" : [  {      "term": {          "db.oracle_props.@name": "open_cursors"      }  },  {      "range": {          "db.oracle_props.@value": {   "lte": 4000          }      }  }         ]     } }        }    }}';

6)查询“雅典娜”和“ Oracle”

curl -XGET localhost:9200/twitter/tweet/_search -d '{    "query" : {        "bool" : { "must" : [     {         "match" : {"tweet.name" : "Athena"}     },     {         "match" : {"tweet.db.@type" : "Oracle"}     } ]        }    }}'

7)结合前两个查询

curl -XGET localhost:9200/twitter/tweet/_search -d '{    "query" : {        "bool" : { "must" : [     {         "match" : {"tweet.name" : "Athena"}     },     {         "match" : {"tweet.db.@type" : "Oracle"}     },     {         "nested" : {  "path" : "db.oracle_props",  "score_mode" : "avg",  "query" : {      "bool" : {          "must" : [   {       "term": {"db.oracle_props.@name": "open_cursors"       }   },   {       "range": {"db.oracle_props.@value": {    "lte": 4000}       }   }          ]      }  }         }     } ]        }    }}'

结果为

{    "took": 2,    "timed_out": false,    "_shards": {        "total": 5,        "successful": 5,        "failed": 0    },    "hits": {        "total": 1,        "max_score": 2.462332,        "hits": [ {     "_index": "twitter",     "_type": "tweet",     "_id": "1",     "_score": 2.462332,     "_source": {         "name": "Athena",         "version": 1,         "db": {  "@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",  "oracle_props": [      {          "@name": "open_cursors",          "@value": 4000      },      {          "@name": "USER_ROLE_PRIVS_COUNT",          "@value": 1      },      {          "@name": "CREATE_PERMISSION",          "@value": "Y"      }  ]         }     } }        ]    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号