ElasticSearch:如何在ElasticSearch中使用IN等效运算符

时间:2017-02-24 08:11:32

标签: elasticsearch

SELECT * FROM Customers 城市IN('巴黎','伦敦')

如何在elasticsearch中转换上述查询..

2 个答案:

答案 0 :(得分:0)

您的查询应如下所示:

POST请求:

http://localhost:9200/Customers/_search? <--assuming customers as your index

和请求BODY

"query":{  
      "query_string":{  
         "query":"City:(Paris London)"
      }
   }

IN 在ES中的行为与:相同。希望这有帮助!

答案 1 :(得分:0)

您可以使用terms query

GET _search
{
    "query" : {
        "terms" : {
            "city" : ["Paris", "London"]
        }
    }
}

但是,请确保您的地图标记city标记为not_analyzed

为了使您的搜索不区分大小写,我可以通过以下两种方式来考虑:

  1. 在索引和查询时小写您的术语,这是一种简单的方法。
  2. 创建一个自定义分析器,用于小写输入,而无需对其进行标记。使用match query代替terms queryTerms query不适用于analyzed字段。
  3. 示例小写分析器如下所示:

    "analyzer": {
        "lowercase_analyzer": {
            "type": "custom",
            "tokenizer": "keyword",
            "filter": [
                "lowercase",
                "asciifolding"
            ]
        }
        }