ElasticSearch查询中的条件

时间:2016-02-16 23:31:07

标签: elasticsearch indexing database nosql

我是ElasticSearch的新手。它看起来非常棒,但我对基于JSON的查询语言非常困惑。

我将使用ES作为文档存储。我有兴趣进行查询,例如“获取年龄= 25岁的所有文件”,或“获取所有文件,其中name ='john'和city ='london'”。但是我还没有理解如何做到这一点。

我可以这样做:

{     “查询”:{             “比赛”: {                      “年龄”:“25”               }       } }

但这就是我要找的东西吗?我认为这也会返回age为“25个苹果”的文件。

请解释如何针对ES发出此类简短查询。

3 个答案:

答案 0 :(得分:0)

对于age匹配,您可以使用term QueryTerm Query寻找完全匹配。

{
"query": {
  "term": {
     "age": "25"
   }
  }
}

答案 1 :(得分:0)

如果你害怕查询DSL,你可能不那么害怕使用query string mini-language(接近Lucene查询语言)passed directly in the URIq=查询字符串参数,学习和事件可能有点简单,虽然它有一些限制,它可以让你走很长的路。

例如,为了查询年龄= 25的所有文档,您可以这样做:

curl -XGET 'localhost:9200/_search?q=age:25'

对于年龄介于25至30岁之间的所有文件:

curl -XGET 'localhost:9200/_search?q=age:[25 TO 30]'

适用于年龄介于25至30岁之间且国家/地区US的所有文件:

curl -XGET 'localhost:9200/_search?q=age:[25 TO 30] AND country:us'

答案 2 :(得分:0)

 To get all documents where (name = john and city = london).You can use following command:


    GET /bank/account/_search?q=firstname:Rodriquez%20AND%20age:31

     Or,You can also try Filters:

     GET /demo/post/_search?pretty=true
     {
       "query": {
         "filtered": {
             "filter": {
                 "and": [
                {
                "term": {
                  "name": "john"
                }
              },
              {
             "term": {
             "city": "london"
                    }
                  }
             ]
            }
           }
          }
        }