搜索equals,contains,fulltext,lessthan,greaterthan in elastic

时间:2016-02-12 13:29:51

标签: elasticsearch

我正在尝试对存在弹性的数据执行4次操作。完全匹配(等于),包含,小于,大于。弹性中有两个选项,即查询和过滤器,从我到目前为止所学到的内容相同,但查询评估的分数最符合数据条件 - 值关系。

我想做的是简单的过滤或查询(我很困惑,在他们的网站中提到它的方式)

  1. 完全匹配,例如Application.Current.MainWindow.Content = new Page1(); name=Arjunage=29
  2. 包含名称包含email=abc@asd.com或电子邮件包含Ar
  3. 的名称
  4. 大于gmail.com
  5. 少于age>29
  6. 到目前为止我一直在使用这种格式(坦率地说,我没有时间做研究和实施)

    age<20

    包含

    的格式
    {{ \"query\" : {{ \"filtered\" : {{ \"filter\" : {{ \"bool\" : {{ {{\"match\" : {\"" name "\" : \"" Arjun "\"} }}  }} }} }} }} }}
    

    以上格式大于或小于

    我根据此URL使用bool表达式按过滤器进行组合 https://www.elastic.co/guide/en/elasticsearch/guide/current/_most_important_queries_and_filters.html

    根据上面的链接,我们可以使用bool来组合查询,并按照示例中的指定 {{ \"query\" : {{ \"filtered\" : {{ \"filter\" : {{ \"bool\" : {{ {\"range\": {\"" age "\": {\"" + gt/lt+ "\": \"" 29 "\"} } } }} }} }} }} }}

    我可以在没有过滤和内部过滤的情况下编写相同的内容吗?

    现在我想在我的(杂乱的)代码中实现equals,我感觉它的代码也不是很好。

    请帮帮我

1 个答案:

答案 0 :(得分:1)

使用如下查询:

{
 "query": {
  "bool": {
     "must": [
        {
           "term": {
              "name": "Arjun"
           }
        },
        {
           "query_string": {
              "default_field": "name",
              "query": "Ar*"
           }
        },
        {
           "range": {
              "age": {
                 "from": 10,
                 "to": 20
              }
           }
        }
       ]
      }
     }
   }