如何找出elasticsearch解析query_string的结果?

2023-11-26

有没有办法通过弹性搜索API如何查询字符串查询实际上被解析了吗?您可以通过查看手动执行此操作lucene查询语法,但是如果您可以查看解析器实际结果的一些表示,那就太好了。


正如 javaanna 在评论中提到的那样_证实API。以下是我的本地弹性(版本 1.6)上的工作原理:

curl -XGET 'http://localhost:9201/pl/_validate/query?explain&pretty' -d'
{
  "query": {
      "query_string": {
      "query": "a OR (b AND c) OR (d AND NOT(e or f))",
      "default_field": "t"
    }
  }
}
'

pl是我的集群上的索引名称。不同的索引可能有不同的分析器,这就是为什么查询验证在索引的范围内执行的原因。

上述curl的结果如下:

{
  "valid" : true,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "explanations" : [ {
    "index" : "pl",
    "valid" : true,
    "explanation" : "filtered(t:a (+t:b +t:c) (+t:d -(t:e t:or t:f)))->cache(org.elasticsearch.index.search.nested.NonNestedDocsFilter@ce2d82f1)"
  } ]
}

我做了一个OR故意小写,正如您在解释中看到的,它被解释为标记而不是运算符。

至于解释的解释。格式类似于+- 运营商 of query string query:

  • ( 和 ) 字符开始和结束bool query
  • + 前缀表示将出现在的子句must
  • - 前缀表示将出现在的子句must_not
  • 没有前缀意味着它将位于should (with default_operator等于OR)

所以上面将等价于下面:

{
  "bool" : {
    "should" : [
      {
        "term" : { "t" : "a" }
      },
      {
        "bool": {
          "must": [
            {
              "term" : { "t" : "b" }
            },
            {
              "term" : { "t" : "c" }
            }
          ]
        }
      },
      {
        "bool": {
          "must": {
              "term" : { "t" : "d" }
          },
          "must_not": {
            "bool": {
              "should": [
                {
                  "term" : { "t" : "e" }
                },
                {
                  "term" : { "t" : "or" }
                },
                {
                  "term" : { "t" : "f" }
                }
              ]
            }
          }
        }
      }
    ]
  }
}

I used _validateapi 相当繁重,调试复杂filtered具有许多条件的查询。如果您想检查分析器如何标记化输入(例如 url)或某些过滤器是否被缓存,那么它特别有用。

还有一个很棒的参数rewrite直到现在我才意识到这一点,这使得解释更加详细,显示了将要执行的实际 Lucene 查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找出elasticsearch解析query_string的结果? 的相关文章

  • 在 Elasticsearch 中对具有一个值的属性进行多个值查询

    我正在尝试在这个查询的基础上进行一些构建 我正在搜索的索引还有一个带有 id 的 实体 字段 因此 一些记录将具有 实体 16 实体 156 等 具体取决于实体的 ID 我需要以这样的方式扩展此查询 以便可以传递数组或某些值列表 例如 te
  • Solr MoreLikeThis 不适用于多个分片?

    我在 SolrCloud 中有 5 个节点集群 每个节点有 2 个分片 Solr版本 6 3 0 现在 当我运行 mlt 查询时 它仅返回每个节点的结果 并且不会将它们分布在所有分片 节点上 即 没有给出任何结果 给出结果 我什至尝试将其指
  • 全文搜索 DynamoDB

    以下情况 我正在为我的客户将元素存储在 DyanmoDb 中 HashKey 是元素 ID Range Key 是客户 ID 除了这些字段之外 我还存储一个字符串数组 gt 标签 例如 Pets House 和多行文本 我想在我的应用程序中
  • 从 App Engine 连接到 Kubernetes 引擎

    我们希望使用应用程序引擎灵活的流程来更新位于 Google Kubernetes Engine 上的 ElasticSearch 索引 我们需要通过 http s 地址连接到 ElasticSearch 推荐的方法是什么 我们不想将集群暴露
  • Lucene 评分:在什么情况下使用 queryNorm?

    我对 lucene 的评分策略有点困惑 我知道Lucene的评分公式是这样的 score q d coord q d x queryNorm q X SUM
  • 如何在不更改设置的情况下不区分大小写排序

    我的索引名称是 data new 下面是插入索引的代码 test id 1 name A professor Bill Cage accounting id 2 name AB professor Gregg Payne engineeri
  • 在弹性搜索中使用 GET/POST 时的不同结果

    我正在通过 Elastic Search Head 插件尝试弹性搜索 当我通过 POST 提交查询时 结果符合预期 但是 当我使用 GET 尝试相同的查询时 我总是会返回索引中的所有值 那么 如何通过 GET 将查询传递到弹性搜索服务器 以
  • openNLP 与 Solr 集成时出现异常

    我正在尝试将 openNLP 与 Solr 6 1 0 集成 我配置了架构和 solrconfig 文件 详细信息请参见 wiki 链接 https wiki apache org solr OpenNLP https wiki apach
  • 如何添加到 OrientDB 中的空间索引?

    我正在使用工作室的 OrientDB 2 0 我使用文档中的代码成功创建了 Lucene 空间索引 CREATE class Place extends V CREATE property Place name string CREATE
  • 在 ElasticSearch API 应用程序中找不到 NodeBuilder

    我正在尝试实现 Elasticsearch API 我的系统接受 nodeBuilder 时出现错误 这是代码 import org elasticsearch action index IndexResponse import org e
  • Solr:在带有空格的字符串上使用通配符

    我的问题与这里讨论的问题基本相同 带空格的 Solr 通配符查询 https stackoverflow com questions 10023133 solr wildcard query with whitespace 但这个问题没有得
  • 从 node.js 创建对 AWS ES 实例的有效签名请求

    我试图找到一个示例 说明如何连接到 Node js 中的 AWS ES 实例 然后通过一个简单的请求访问 ES 集群 我正在尝试使用elasticsearch节点包 https www npmjs com package elasticse
  • ElasticSearch 映射对分组文档进行折叠/执行操作的结果

    有一个对话列表 每个对话都有一个消息列表 每条消息都有不同的字段和action场地 我们需要考虑到在对话的第一条消息中使用了动作A 在几条消息之后有使用的动作A 1过了一会儿A 1 1等等 有一个聊天机器人意图列表 对对话的消息操作进行分组
  • Elastic Search 索引经常被删除[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在 google cloud 上对个人项目运行弹性搜索 并将其用作我的应用程序的搜索索引 从最近三天开始 索引就被神秘地删除了 我不知
  • 在 Elasticsearch Java API 中使用 slop 维护匹配短语查询的序列顺序

    我正在尝试执行一个查询 该查询应该与短语查询类似 只是连续标记内可能存在间隙 例子 Document a b c d Search a c gt gt This should return the document Search c a g
  • 如何使用scala获取elasticsearch中_delete_by_query api的状态

    我正在 scala 中向 elasticsearch 发送 HTTP post Http s http elkIp 5051 indexName delete by query postData s query terms zip id k
  • 聚合多个递归logstash

    我正在使用带有输入 jdbc 的 Logstash 并且希望通过聚合将一个对象嵌入到另一个对象中 如何使用添加递归 即在另一个对象中添加一个对象 这是一个例子 index my index type test id 1 version 1
  • Lucene 4.0 中的术语频率

    尝试使用 Lucene 4 0 计算词频 我的文档频率工作得很好 但不知道如何使用 API 来执行术语频率 这是我的代码 private static void addDoc IndexWriter writer String conten
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • Lucene 标准分析器与 Snowball

    刚刚开始使用 Lucene Net 我使用标准分析器索引了 100 000 行 运行了一些测试查询 并注意到如果原始术语是单数 则复数查询不会返回结果 我知道雪球分析器增加了词干支持 这听起来不错 不过 我想知道 超过标准的雪球锣是否有任何

随机推荐

  • 如何在elasticsearch中索引geojson文件?

    我正在尝试使用 PYTHON 以 geojson csv 文件和形状文件的形式将空间数据存储到 elasticsearch 中 我是 elasticsearch 的新手 即使在遵循文档后我也无法成功索引它 任何帮助 将不胜感激 示例 geo
  • 防止存储过程同时执行两次

    我有一个 SQL Server 2000 的存储过程 在任何给定时刻只能执行一个实例 有什么方法可以检查并确保该过程当前没有在执行吗 理想情况下 我希望代码是独立且高效 快速 的 我也不想做一些事情 比如创建一个全局临时表来检查它是否存在
  • 如何在C++中生成随机顶点以形成凸多边形?

    我需要为一个简单的凸多边形生成一组顶点 以便使用动态编程对该多边形进行最小权重三角剖分 我考虑取一个半径为 r 的圆 然后取 20 个顶点逆时针移动 然后我将形成一个20个顶点凸多边形但我该怎么做 我怎么知道半径为 r 的圆上的顶点 除了这
  • Asp.Net core 2.0 MVC 锚标记帮助器不工作

    我正在尝试创建一个演示页面 但无法解决下一个问题 并且我尝试了在网络上找到的所有内容 我有一个带有标签助手的锚标签 a class menu link Telefonok a 我还添加了一个 ViewImports cshtml我在其中添加
  • C# WebClient 下载字符串 https

    在网络浏览器中我通常可以加载以下网址 https security ultimatxxxx com 443 Serverstatus ashx 当我这样做时 Webclient DownloadStringAsync https secur
  • 从内存而不是磁盘向 CompilerParameters ReferencedAssemblies 提供程序集?

    我有一个CompilerParameters我用来喂食的物体Microsoft CSharp CSharpCodeProvider对象和一个ICodeCompiler从中派生出的对象 一切正常 我可以即时编译代码 我的问题是引用的程序集 现
  • 如何在 Google App Engine 上使用 Python 发送 JSON 格式的 cookie 数据?

    我正在尝试在 Python 脚本中编码一个对象并将其设置为 cookie 以便我可以使用客户端 JavaScript 读取它 我尝试的各种方法都遇到了问题 一般来说 cookie 的格式化方式会导致 JSON parse 中断 我当前的脚本
  • Angular 6“mat-button-toggle”不是已知元素

    我已经检查过这些问题 mat toolbar 不是已知元素 Angular 5 Jhipster md button 不是已知元素 模板解析错误 mat icon 不是已知元素 材质 2 md datepicker toggle 不是已知元
  • 将选定的文本复制到剪贴板而不使用 Flash - 必须是跨浏览器

    我想要一个按钮来选择文本textarea并将其复制到剪贴板 我似乎找不到任何适用于所有浏览器且不使用 Flash 的解决方案 这当然可行吗 我到处都见过它 但我猜他们使用闪光灯 如果可能的话我真的想远离它 因为有些人没有它 这就是我到目前为
  • grunt uglify 任务失败

    运行 grunt 时 出现以下错误 警告 无法写入 client dist js build js 文件 错误代码 未定义 使用 force 继续 我的 uglify 的配置Gruntfile js uglify build src cli
  • 有没有办法仅使用 CSS 生成给定范围内的随机数?

    例如 类似 div margin left random 100 100 目前无法在纯 CSS 中执行此操作 但是如果您使用 CSS 预处理器 例如LESS 那么您可以执行以下操作 randomMargin Math round Math
  • 隐式与显式链接到 DLL

    何时应隐式或显式链接到 DLL 常见做法或陷阱是什么 显式链接 DLL 的情况相当罕见 主要是因为它很痛苦并且容易出错 您需要为导出的函数编写函数指针声明 并正确获取 LoadLibrary GetProcAddress FreeLibra
  • 重新连接断开连接的 SignalR 客户端 (JS) 的最佳实践

    我想提高 signalR 客户端的客户端实现的弹性 目前 我这样做 hub server sendClientNotification string appSettings username 然而 偶尔会引发与连接相关的异常 因为服务器没有
  • 将纪元时间(毫秒)转换为日期时间

    我使用 ruby 脚本将 iso 时间戳转换为纪元 我正在解析的文件具有以下时间戳结构 2009 03 08T00 27 31 807 因为我想保留毫秒 所以我使用以下 ruby 代码将其转换为纪元时间 irb main 010 0 gt
  • JQuery Mobile - 用户登录最佳实践

    我正在使用 JQuery Mobile 为现有的 Web 应用程序构建一个移动界面 该应用程序需要用户身份验证 但我无法确定实现登录过程的最佳方法 我不太关心服务器端身份验证 而是如何在用户端实现它 经过一番尝试 似乎有以下选项 使用 PO
  • 如何在 Eclipse 启动配置中使用变量进行类路径定义?

    在我们的项目中 我们使用 Eclipse 启动配置 这些配置受版本控制 可与所有开发人员共享 现在需要将外部存档包含到启动配置文件的类路径中 幸运的是 所需的存档位于每个开发人员的本地 Maven 存储库中 我已经发现有一个名为的类路径变量
  • WPF 图像工具提示

    我在列表框内的图像上有一个工具提示 工具提示设置如下
  • 如何强制maven更新?

    我在另一台计算机上导入了已经工作的项目 它开始下载依赖项 显然我的互联网连接崩溃了 现在我得到以下信息 gt Build errors for comics org apache maven lifecycle LifecycleExecu
  • 无法加载目标的共享库“gdx”

    我遇到了同样的问题这个问题 但那里的答案并没有解决我的问题 我没有通过 gdxsetup jar 创建项目 我只是包含了 gdx jar 和 gdx backend android jar 我将 libgdx so 添加到 libs x86
  • 如何找出elasticsearch解析query_string的结果?

    有没有办法通过弹性搜索API如何查询字符串查询实际上被解析了吗 您可以通过查看手动执行此操作lucene查询语法 但是如果您可以查看解析器实际结果的一些表示 那就太好了 正如 javaanna 在评论中提到的那样 证实API 以下是我的本地