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

标签 elasticsearch

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

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

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

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

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

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

最佳答案

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

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

关于elasticsearch - 如何使用 “query_string”查询文档并过滤出列表字段的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58533641/

相关文章:

python - 使用Elasticsearch Python API时如何返回所有分片?

elasticsearch - 在前端进行搜索操作时获取数据计数

elasticsearch - Elasticsearch在短语中找到丢失的单词

elasticsearch - 如何从 Elasticsearch 中获取条件数据

elasticsearch - Elasticsearch仅返回与ID数组匹配的结果

c# - 为所有关键字字段NEST添加规范化器

elasticsearch - Elasticsearch 集群级分析器

elasticsearch - 为单个 Elasticsearch 索引维护两个别名的用途是什么

elasticsearch - ES 的 Jedis 'front end'

node.js - 如何创建作业以将Elasticsearch索引中的所有文档作为数据流处理?