• ElasticSearch7.3学习(二十)----采用restful风格查询详解


    1、Query DSL入门

    1.1 DSL

    DSL:Domain Specified Language,特定领域的语言。es特有的搜索语言,可在请求体中携带搜索条件,功能强大。

    查询全部 

    1. GET /book/_search
    2. {
    3. "query": { "match_all": {} }
    4. }

    排序 

    1. GET /book/_search
    2. {
    3.   "query" : {
    4.       "match" : {
    5.           "name" : " java"
    6.       }
    7.   },
    8.   "sort": [
    9.       { "price": "desc" }
    10.   ]
    11. }

    分页查询

    1. GET /book/_search
    2. {
    3. "query": { "match_all": {} },
    4. "from": 0,
    5. "size": 1
    6. }

    指定返回字段 

    1. GET /book/_search
    2. {
    3. "query": { "match_all": {} },
    4. "_source": ["name", "studymodel"]
    5. }

    通过组合以上各种类型查询,实现复杂查询。

    1.2 Query DSL语法

    1. {
    2.   QUERY_NAME: {
    3.       ARGUMENT: VALUE,
    4.       ARGUMENT: VALUE,...
    5.   }
    6. }
    1. {
    2.   QUERY_NAME: {
    3.       FIELD_NAME: {
    4.           ARGUMENT: VALUE,
    5.           ARGUMENT: VALUE,...
    6.       }
    7.   }
    8. }
    1. GET /test_index/_search
    2. {
    3. "query": {
    4.   "match": {
    5.     "test_field": "test"
    6.   }
    7. }
    8. }

    1.3 组合多个搜索条件

    搜索需求:

    title字段必须包含elasticsearch,content可以包含elasticsearch也可以不包含,author_id必须不为111

    初始数据:

    1. POST /website/_doc/1
    2. {
    3. "title": "my hadoop article",
    4. "content": "hadoop is very bad",
    5. "author_id": 111
    6. }
    7. POST /website/_doc/2
    8. {
    9. "title": "my elasticsearch article",
    10. "content": "es is very bad",
    11. "author_id": 112
    12. }
    13. POST /website/_doc/3
    14. {
    15. "title": "my elasticsearch article",
    16. "content": "es is very goods",
    17. "author_id": 111
    18. }

    搜索:

    1. GET /website/_search
    2. {
    3. "query": {
    4. "bool": {
    5. "must": [
    6. {
    7. "match": {
    8. "title": "elasticsearch"
    9. }
    10. }
    11. ],
    12. "should": [
    13. {
    14. "match": {
    15. "content": "elasticsearch"
    16. }
    17. }
    18. ],
    19. "must_not": [
    20. {
    21. "match": {
    22. "author_id": 111
    23. }
    24. }
    25. ]
    26. }
    27. }
    28. }

    返回:

    1. {
    2. "took" : 1,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 1,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 0.47000363,
    16. "hits" : [
    17. {
    18. "_index" : "website",
    19. "_type" : "_doc",
    20. "_id" : "2",
    21. "_score" : 0.47000363,
    22. "_source" : {
    23. "title" : "my elasticsearch article",
    24. "content" : "es is very bad",
    25. "author_id" : 112
    26. }
    27. }
    28. ]
    29. }
    30. }

    再次查询一个更复杂的搜索需求,例如如下sql语句,采用ElasticSearch来实现。

    select * from test_index where name='tom' or (hired =true and (personality ='good' and rude != true ))

    ES语句如下:

    1. GET /test_index/_search
    2. {
    3.   "query": {
    4.           "bool": {
    5.               "must": { "match":{ "name": "tom" }},
    6.               "should": [
    7.                   { "match":{ "hired": true }},
    8.                   { "bool": {
    9.                       "must":{ "match": { "personality": "good" }},
    10.                       "must_not": { "match": { "rude": true }}
    11.                   }}
    12.               ],
    13.               "minimum_should_match": 1
    14.           }
    15.   }
    16. }

    2、full-text search 全文检索

    2.1 全文检索

    首先创建book索引

    1. PUT /book/
    2. {
    3. "settings": {
    4. "number_of_shards": 1,
    5. "number_of_replicas": 0
    6. },
    7. "mappings": {
    8. "properties": {
    9. "name": {
    10. "type": "text",
    11. "analyzer": "ik_max_word",
    12. "search_analyzer": "ik_smart"
    13. },
    14. "description": {
    15. "type": "text",
    16. "analyzer": "ik_max_word",
    17. "search_analyzer": "ik_smart"
    18. },
    19. "studymodel": {
    20. "type": "keyword"
    21. },
    22. "price": {
    23. "type": "double"
    24. },
    25. "timestamp": {
    26. "type": "date",
    27. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
    28. },
    29. "pic": {
    30. "type": "text",
    31. "index": false
    32. }
    33. }
    34. }
    35. }

    插入数据

    1. PUT /book/_doc/1
    2. {
    3. "name": "Bootstrap开发",
    4. "description": "Bootstrap是由Twitter推出的一个前台页面开发css框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长css页面开发的程序人员)轻松的实现一个css,不受浏览器限制的精美界面css效果。",
    5. "studymodel": "201002",
    6. "price": 38.6,
    7. "timestamp": "2019-08-25 19:11:35",
    8. "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    9. "tags": [
    10. "bootstrap",
    11. "dev"
    12. ]
    13. }
    14. PUT /book/_doc/2
    15. {
    16. "name": "java编程思想",
    17. "description": "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    18. "studymodel": "201001",
    19. "price": 68.6,
    20. "timestamp": "2019-08-25 19:11:35",
    21. "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    22. "tags": [
    23. "java",
    24. "dev"
    25. ]
    26. }
    27. PUT /book/_doc/3
    28. {
    29. "name": "spring开发基础",
    30. "description": "spring 在java领域非常流行,java程序员都在用。",
    31. "studymodel": "201001",
    32. "price": 88.6,
    33. "timestamp": "2019-08-24 19:11:35",
    34. "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    35. "tags": [
    36. "spring",
    37. "java"
    38. ]
    39. }

    先简单的搜索一下,搜索description中包含java程序员的数据

    1. GET /book/_search
    2. {
    3. "query": {
    4. "match": {
    5. "description": "java程序员"
    6. }
    7. }
    8. }

    结果如下

    1. {
    2. "took" : 257,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 2,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 2.137549,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "3",
    21. "_score" : 2.137549,
    22. "_source" : {
    23. "name" : "spring开发基础",
    24. "description" : "spring 在java领域非常流行,java程序员都在用。",
    25. "studymodel" : "201001",
    26. "price" : 88.6,
    27. "timestamp" : "2019-08-24 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "spring",
    31. "java"
    32. ]
    33. }
    34. },
    35. {
    36. "_index" : "book",
    37. "_type" : "_doc",
    38. "_id" : "2",
    39. "_score" : 0.57961315,
    40. "_source" : {
    41. "name" : "java编程思想",
    42. "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    43. "studymodel" : "201001",
    44. "price" : 68.6,
    45. "timestamp" : "2019-08-25 19:11:35",
    46. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    47. "tags" : [
    48. "java",
    49. "dev"
    50. ]
    51. }
    52. }
    53. ]
    54. }
    55. }

    2.2 _score简单介绍

    对于上面的搜索结果来进行一个简单的结果分析

    1、建立索引时, description字段 term 倒排索引

    关键词文档
    java2,3
    程序员3

    2、搜索时,直接找description中含有java的文档 2,3,并且3号文档含有两个java字段,一个程序员,所以得分高,排在前面。2号文档含有一个java,排在后面。

    这里只是简单的介绍一下_score这个字段的作用,更详细的后续会介绍。

    3、DSL 语法练习

    3.1 match_all

    1. GET /book/_search
    2. {
    3.   "query": {
    4.       "match_all": {}
    5.   }
    6. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 3,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 1.0,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "1",
    21. "_score" : 1.0,
    22. "_source" : {
    23. "name" : "Bootstrap开发",
    24. "description" : "Bootstrap是由Twitter推出的一个前台页面开发css框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长css页面开发的程序人员)轻松的实现一个css,不受浏览器限制的精美界面css效果。",
    25. "studymodel" : "201002",
    26. "price" : 38.6,
    27. "timestamp" : "2019-08-25 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "bootstrap",
    31. "dev"
    32. ]
    33. }
    34. },
    35. {
    36. "_index" : "book",
    37. "_type" : "_doc",
    38. "_id" : "2",
    39. "_score" : 1.0,
    40. "_source" : {
    41. "name" : "java编程思想",
    42. "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    43. "studymodel" : "201001",
    44. "price" : 68.6,
    45. "timestamp" : "2019-08-25 19:11:35",
    46. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    47. "tags" : [
    48. "java",
    49. "dev"
    50. ]
    51. }
    52. },
    53. {
    54. "_index" : "book",
    55. "_type" : "_doc",
    56. "_id" : "3",
    57. "_score" : 1.0,
    58. "_source" : {
    59. "name" : "spring开发基础",
    60. "description" : "spring 在java领域非常流行,java程序员都在用。",
    61. "studymodel" : "201001",
    62. "price" : 88.6,
    63. "timestamp" : "2019-08-24 19:11:35",
    64. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    65. "tags" : [
    66. "spring",
    67. "java"
    68. ]
    69. }
    70. }
    71. ]
    72. }
    73. }

    3.2 match

    1. GET /book/_search
    2. {
    3. "query": {
    4. "match": {
    5. "description": "java程序员"
    6. }
    7. }
    8. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 2,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 2.137549,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "3",
    21. "_score" : 2.137549,
    22. "_source" : {
    23. "name" : "spring开发基础",
    24. "description" : "spring 在java领域非常流行,java程序员都在用。",
    25. "studymodel" : "201001",
    26. "price" : 88.6,
    27. "timestamp" : "2019-08-24 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "spring",
    31. "java"
    32. ]
    33. }
    34. },
    35. {
    36. "_index" : "book",
    37. "_type" : "_doc",
    38. "_id" : "2",
    39. "_score" : 0.57961315,
    40. "_source" : {
    41. "name" : "java编程思想",
    42. "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    43. "studymodel" : "201001",
    44. "price" : 68.6,
    45. "timestamp" : "2019-08-25 19:11:35",
    46. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    47. "tags" : [
    48. "java",
    49. "dev"
    50. ]
    51. }
    52. }
    53. ]
    54. }
    55. }

    3.3 multi_match

    1. GET /book/_search
    2. {
    3. "query": {
    4. "multi_match": {
    5. "query": "java程序员",
    6. "fields": [
    7. "name"
    8. ]
    9. }
    10. }
    11. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 1,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 0.9331132,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "2",
    21. "_score" : 0.9331132,
    22. "_source" : {
    23. "name" : "java编程思想",
    24. "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    25. "studymodel" : "201001",
    26. "price" : 68.6,
    27. "timestamp" : "2019-08-25 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "java",
    31. "dev"
    32. ]
    33. }
    34. }
    35. ]
    36. }
    37. }

    3.4 range query 范围查询

    gt 大于 gte 大于等于

    1. GET /book/_search
    2. {
    3. "query": {
    4. "range": {
    5. "price": {
    6. "gte": 80,
    7. "lte": 90
    8. }
    9. }
    10. }
    11. }

    结果:

    查看代码

    1. {
    2. "took" : 2,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 1,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 1.0,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "3",
    21. "_score" : 1.0,
    22. "_source" : {
    23. "name" : "spring开发基础",
    24. "description" : "spring 在java领域非常流行,java程序员都在用。",
    25. "studymodel" : "201001",
    26. "price" : 88.6,
    27. "timestamp" : "2019-08-24 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "spring",
    31. "java"
    32. ]
    33. }
    34. }
    35. ]
    36. }
    37. }

    3.5 term query

    字段为keyword时,存储和搜索都不分词

    1. GET /book/_search
    2. {
    3. "query": {
    4. "term": {
    5. "description": "java程序员"
    6. }
    7. }
    8. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 0,
    13. "relation" : "eq"
    14. },
    15. "max_score" : null,
    16. "hits" : [ ]
    17. }
    18. }

    3.6 terms query

    1. GET /book/_search
    2. {
    3. "query": {
    4. "terms": {
    5. "tag": [
    6. "search",
    7. "full_text",
    8. "nosql"
    9. ]
    10. }
    11. }
    12. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 0,
    13. "relation" : "eq"
    14. },
    15. "max_score" : null,
    16. "hits" : [ ]
    17. }
    18. }

    3.7 exist query 查询有某些字段值的文档

    1. GET /book/_search
    2. {
    3.   "query": {
    4.       "exists": {
    5.           "field": "join_date"
    6.       }
    7.   }
    8. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 0,
    13. "relation" : "eq"
    14. },
    15. "max_score" : null,
    16. "hits" : [ ]
    17. }
    18. }

    3.8 Fuzzy query 模糊查询

    返回包含与搜索词类似的词的文档,该词由Levenshtein编辑距离度量。

    包括以下几种情况:

    • 更改角色(box→fox)

    • 删除字符(aple→apple)

    • 插入字符(sick→sic)

    • 调换两个相邻字符(ACT→CAT)

    1. GET /book/_search
    2. {
    3. "query": {
    4. "fuzzy": {
    5. "description": {
    6. "value": "jave"
    7. }
    8. }
    9. }
    10. }

    结果:

    查看代码

    1. {
    2. "took" : 78,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 2,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 0.59524715,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "3",
    21. "_score" : 0.59524715,
    22. "_source" : {
    23. "name" : "spring开发基础",
    24. "description" : "spring 在java领域非常流行,java程序员都在用。",
    25. "studymodel" : "201001",
    26. "price" : 88.6,
    27. "timestamp" : "2019-08-24 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "spring",
    31. "java"
    32. ]
    33. }
    34. },
    35. {
    36. "_index" : "book",
    37. "_type" : "_doc",
    38. "_id" : "2",
    39. "_score" : 0.43470988,
    40. "_source" : {
    41. "name" : "java编程思想",
    42. "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    43. "studymodel" : "201001",
    44. "price" : 68.6,
    45. "timestamp" : "2019-08-25 19:11:35",
    46. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    47. "tags" : [
    48. "java",
    49. "dev"
    50. ]
    51. }
    52. }
    53. ]
    54. }
    55. }

    3.9 IDs

    查询id

    1. GET /book/_search
    2. {
    3. "query": {
    4. "ids": {
    5. "values" : ["1", "4", "100"]
    6. }
    7. }
    8. }

    结果:

    查看代码

    1. {
    2. "took" : 0,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 1,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 1.0,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "1",
    21. "_score" : 1.0,
    22. "_source" : {
    23. "name" : "Bootstrap开发",
    24. "description" : "Bootstrap是由Twitter推出的一个前台页面开发css框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长css页面开发的程序人员)轻松的实现一个css,不受浏览器限制的精美界面css效果。",
    25. "studymodel" : "201002",
    26. "price" : 38.6,
    27. "timestamp" : "2019-08-25 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "bootstrap",
    31. "dev"
    32. ]
    33. }
    34. }
    35. ]
    36. }
    37. }

    3.10 prefix 前缀查询

    1. GET /book/_search
    2. {
    3. "query": {
    4. "prefix": {
    5. "description": {
    6. "value": "spring"
    7. }
    8. }
    9. }
    10. }

    结果:

    查看代码

    1. {
    2. "took" : 2,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 1,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 1.0,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "3",
    21. "_score" : 1.0,
    22. "_source" : {
    23. "name" : "spring开发基础",
    24. "description" : "spring 在java领域非常流行,java程序员都在用。",
    25. "studymodel" : "201001",
    26. "price" : 88.6,
    27. "timestamp" : "2019-08-24 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "spring",
    31. "java"
    32. ]
    33. }
    34. }
    35. ]
    36. }
    37. }

    3.11 regexp query 正则查询

    以j开头,以a结尾 .*一个或多个

    1. GET /book/_search
    2. {
    3. "query": {
    4. "regexp": {
    5. "description": {
    6. "value": "j.*a",
    7. "flags": "ALL",
    8. "max_determinized_states": 10000,
    9. "rewrite": "constant_score"
    10. }
    11. }
    12. }
    13. }

    结果:

    查看代码

    1. {
    2. "took" : 1,
    3. "timed_out" : false,
    4. "_shards" : {
    5. "total" : 1,
    6. "successful" : 1,
    7. "skipped" : 0,
    8. "failed" : 0
    9. },
    10. "hits" : {
    11. "total" : {
    12. "value" : 2,
    13. "relation" : "eq"
    14. },
    15. "max_score" : 1.0,
    16. "hits" : [
    17. {
    18. "_index" : "book",
    19. "_type" : "_doc",
    20. "_id" : "2",
    21. "_score" : 1.0,
    22. "_source" : {
    23. "name" : "java编程思想",
    24. "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
    25. "studymodel" : "201001",
    26. "price" : 68.6,
    27. "timestamp" : "2019-08-25 19:11:35",
    28. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    29. "tags" : [
    30. "java",
    31. "dev"
    32. ]
    33. }
    34. },
    35. {
    36. "_index" : "book",
    37. "_type" : "_doc",
    38. "_id" : "3",
    39. "_score" : 1.0,
    40. "_source" : {
    41. "name" : "spring开发基础",
    42. "description" : "spring 在java领域非常流行,java程序员都在用。",
    43. "studymodel" : "201001",
    44. "price" : 88.6,
    45. "timestamp" : "2019-08-24 19:11:35",
    46. "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    47. "tags" : [
    48. "spring",
    49. "java"
    50. ]
    51. }
    52. }
    53. ]
    54. }
    55. }

  • 相关阅读:
    解决ModuleNotFoundError: No module named ‘diffusers.models.cross_attention‘
    spring-Study
    .NET餐厅管理系统管理员添加编辑页面前端
    C++停车场管理系统
    利用h5py加速数据集读取
    Shiro和Zuul权限管理整合方案
    从0开始python学习-23.selenium 常见鼠标的操作
    想考阿里云ACP认证,网上买题库靠谱吗?
    1019 链表的下一个更大节点(单调栈)
    模型评估指标
  • 原文地址:https://blog.csdn.net/FaithWh/article/details/126810678