Query DSL搜索语法

Query DSL搜索语法

ES中有两种搜索语法: 1. Query String (GET /index/type/?name=??)

1、一个例子让你明白什么是Query DSL

GET /_search
{
​ “query”: {
​ “match_all”: {}
​ }
}

2、Query DSL的基本语法

{
​ QUERY_NAME: {
​ ARGUMENT: VALUE,
​ ARGUMENT: VALUE,…
​ }
}

{
​ QUERY_NAME: {
​ FIELD_NAME: {
​ ARGUMENT: VALUE,
​ ARGUMENT: VALUE,…
​ }
​ }
}

示例:

GET /test_index/test_type/_search
{
“query”: {
​ “match”: {
​ “test_field”: “test”
​ }
}
}

3、如何组合多个搜索条件

搜索需求:title必须包含elasticsearch,content可以包含elasticsearch也可以不包含,author_id必须不为111

{
“took”: 1,
“timed_out”: false,
“_shards”: {
​ “total”: 5,
​ “successful”: 5,
​ “failed”: 0
},
“hits”: {
​ “total”: 3,
​ “max_score”: 1,
​ “hits”: [
​ {
​ “_index”: “website”,
​ “_type”: “article”,
​ “_id”: “2”,
​ “_score”: 1,
​ “_source”: {
​ “title”: “my hadoop article”,
​ “content”: “hadoop is very bad”,
​ “author_id”: 111
​ }
​ },
​ {
​ “_index”: “website”,
​ “_type”: “article”,
​ “_id”: “1”,
​ “_score”: 1,
​ “_source”: {
​ “title”: “my elasticsearch article”,
​ “content”: “es is very bad”,
​ “author_id”: 110
​ }
​ },
​ {
​ “_index”: “website”,
​ “_type”: “article”,
​ “_id”: “3”,
​ “_score”: 1,
​ “_source”: {
​ “title”: “my elasticsearch article”,
​ “content”: “es is very goods”,
​ “author_id”: 111
​ }
​ }
​ ]
}
}

GET /website/article/_search
{
“query”: {
​ “bool”: {
​ “must”: [
​ {
​ “match”: {
​ “title”: “elasticsearch”
​ }
​ }
​ ],
​ “should”: [
​ {
​ “match”: {
​ “content”: “elasticsearch”
​ }
​ }
​ ],
​ “must_not”: [
​ {
​ “match”: {
​ “author_id”: 111
​ }
​ }
​ ]
​ }
}
}

复杂的写法:

GET /test_index/_search
{
​ “query”: {
​ “bool”: {
​ “must”: { “match”: { “name”: “tom” }},
​ “should”: [
​ { “match”: { “hired”: true }},
​ { “bool”: {
​ “must”: { “match”: { “personality”: “good” }},
​ “must_not”: { “match”: { “rude”: true }}
​ }}
​ ],
​ “minimum_should_match”: 1
​ }
​ }
}

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • © 2020 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信