javascript - elasticsearch搜索过滤器等于问题

标签 javascript node.js elasticsearch

我有一个具有以下映射的人员数据库索引。

{
    "person" : {
                "sex"       : { "type" : "string" },
                "dob"      : { "type" : "string" },         
                "fname"      : { "type" : "string" },
                "lname"      : { "type" : "string" },
                "phone"      : { "type" : "string" }
      }
}

我的需要是查找具有多个条件子句的所有匹配条目。

出生日期 + 电话 + 性别(或)fname + lname + dob

如何为上述条件创建查询或过滤器(使用 bool)。我还需要查询或过滤不区分大小写。

有什么想法吗?

谢谢

最佳答案

should 查询中嵌套两组 must 查询将满足您的要求,请参阅 bool欲了解更多信息:

curl -XGET 'http://localhost:9200/people/person/_search?pretty' -d '{
   "query": {
      "bool": {
         "should": [
             {"bool": {
                "must": [
                  {"match": { "sex" : "male" }},
                  {"match": { "dob" : "2000-11-14" }},
                  {"match": { "phone" : "1234 67889" }}
                ]
              }
             },
             {"bool": {
                "must": [
                  {"match": { "fname" : "bob" }},
                  {"match": { "dob" : "2000-11-14" }},
                  {"match": { "lname" : "smith" }}
                ]
              }
             }
            ]
        }
     }
 }'
<小时/>

Also I need to query or filter case-insensitive.

标准分析器将以小写形式索引数据 - match查询将对您的搜索词应用相同的分析器。

另外 - 将您的出生日期存储为日期也是一个好主意。

关于javascript - elasticsearch搜索过滤器等于问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942721/

相关文章:

javascript - 如何合并包含符号的javascript对象?

java - Elastic 6.5 不支持 IndexRequest

javascript - DOM更新时如何维护jquery inputmask?

c# - 在服务器和客户端上一致地存储 DateTime

node.js - 限制 Node 表达到特定主机名?

mysql - 为订阅系统设计一个作业调度程序

elasticsearch - 为什么 "snowball"分析器在 Elasticsearch 5.1 中被删除

Elasticsearch 基数聚合给出完全错误的结果

javascript - Bootstrap Selectpicker 问题

javascript - 从 ng-repeat 更改元素的样式