如何使用“ query_string”查询文档并过滤出列表字段的第一个元素

时间:2019-10-24 03:15:27

标签: elasticsearch

在我的Elasticsearch中,我有一个像这样的文档:

          "field_4" : [
            "ip_address",
            "127.0.0.1"
          ],
          "field_1" : 6522000300012,
          "field_2" : "asdfa",
          "field_26" : [
            "address",
            "HongKong"
          ]

我的身体是:

body = {
            "query": {
                "bool": {
                    "must": [{"query_string": {"query": "*p*"}}]
                }
            }
        }

现在我的查询可以找到所有带有字符串“ P”的字段,但是对于列表类型的字段,我不想查询它们的第一个元素。

我的意思是无法查询以上文档,因为字符串“ p”仅存在于列表类型filed_4的第一个元素中。

有没有一种方法可以编写一个在Elasticsearch中搜索时不包含列表的第一个元素的查询? 谢谢!

1 个答案:

答案 0 :(得分:0)

Elasticsearch query_string支持fields来查询特定字段。因此,您只能指定要查询的字段

body = {
            "query": {
                "bool": {
                    "must": [{"query_string": {"query": "*p*","fields":["field_1","field_2","field_26"]}}]
                }
            }
        }