我在Elasticsearch中有一个小型数据库,出于测试目的,我希望将所有记录拉回来.我试图使用表单的URL ...
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
Run Code Online (Sandbox Code Playgroud)
有人可以给我你用来完成这个的URL吗?
database bigdata query-string elasticsearch elasticsearch-dsl
我遇到了弹性搜索查询的问题.我希望能够对结果进行排序,但elasticsearch忽略了排序标记.在这里我的查询:
{
"sort": [{
"title": {"order": "desc"}
}],
"query":{
"term": { "title": "pagos" }
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我删除查询部分并且我只发送排序标记时,它可以工作.任何人都能指出我正确的方法吗?
我也试过以下查询,这是我的完整查询:
{
"sort": [{
"title": {"order": "asc"}
}],
"query":{
"bool":{
"should":[
{
"match":{
"title":{
"query":"Pagos",
"boost":9
}
}
},
{
"match":{
"description":{
"query":"Pagos",
"boost":5
}
}
},
{
"match":{
"keywords":{
"query":"Pagos",
"boost":3
}
}
},
{
"match":{
"owner":{
"query":"Pagos",
"boost":2
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
设置
{
"settings": {
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "ngram",
"min_gram": 3,
"max_gram": 15, …Run Code Online (Sandbox Code Playgroud) 有人能告诉我如何编写Python语句来汇总(总结和计算)有关我文档的内容吗?
脚本
from datetime import datetime
from elasticsearch_dsl import DocType, String, Date, Integer
from elasticsearch_dsl.connections import connections
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q
# Define a default Elasticsearch client
client = connections.create_connection(hosts=['http://blahblahblah:9200'])
s = Search(using=client, index="attendance")
s = s.execute()
for tag in s.aggregations.per_tag.buckets:
print (tag.key)
Run Code Online (Sandbox Code Playgroud)
OUTPUT
File "/Library/Python/2.7/site-packages/elasticsearch_dsl/utils.py", line 106, in __getattr__
'%r object has no attribute %r' % (self.__class__.__name__, attr_name))
AttributeError: 'Response' object has no attribute 'aggregations'
Run Code Online (Sandbox Code Playgroud)
是什么造成的?"聚合"关键字是错误的吗?我需要导入一些其他包吗?如果"出勤"索引中的文档有一个名为emailAddress的字段,我如何计算哪些文档具有该字段的值?
我正在尝试过滤 Kibana 以查找包含字符串“pH”的字段。该字段称为extra.monitor_value_name. 潜在值的示例有Temperature_ABC01、DO_ABC01、 或pH_ABC01。
Kibana 的 Elasticsearch Query DSL 似乎没有“包含字符串”,因此我需要自定义查询。
我是 Query DSL 的新手,您能帮我创建查询吗?
另外,将其称为 Query DSL 是否合适?我什至不确定措辞是否正确。
我知道有批量索引操作的支持.但搜索查询是否也可以这样做?我想发送许多不同的无关查询(进行精确/召回测试),使用批量查询可能会更快
我如何在elasticsearch dsl上使用django分页.我的代码:
query = MultiMatch(query=q, fields=['title', 'body'], fuzziness='AUTO')
s = Search(using=elastic_client, index='post').query(query).sort('-created_at')
response = s.execute()
// this always returns page count 1
paginator = Paginator(response, 100)
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
Run Code Online (Sandbox Code Playgroud)
对此有何解决方案?
我有一个像这样的弹性搜索聚合查询.
{
"aggs": {
"customer": {
"aggs": {
"Total_Sale": {
"sum": {
"field": "amount"
}
}
},
"terms": {
"field": "org",
"size": 50000
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它会导致桶聚合,如下所示
{
"aggregations": {
"customer": {
"buckets": [
{
"Total_Sale": { "value": 9999 },
"doc_count": 8,
"key": "cats"
},
{
"Total_Sale": { "value": 8888 },
"doc_count": 6,
"key": "tigers"
},
{
"Total_Sale": { "value": 444},
"doc_count": 5,
"key": "lions"
},
{
"Total_Sale": { "value": 555 },
"doc_count": 2,
"key": "wolves"
}
]
} …Run Code Online (Sandbox Code Playgroud) 以下是获取精确匹配的查询
GET courses/_search
{
"query": {
"term" : {
"name.keyword": "Anthropology 230"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要找到Anthropology 230和Anthropology 250 also
如何获得精确匹配
我们使用AWS管理的Elasticsearch服务,最近从1.5升级到2.3.我们在python中使用elasticsearch-dsl包来构建我们的查询并设法迁移我们的大多数查询,但无论我尝试什么,geo_distance都会被破坏.
制图:
{
'company': {
'properties': {
'id': {'type': 'integer'},
'company_number': {'type': 'string'},
'addresses': {
'type': 'nested',
'properties': {
'postcode': {'type': 'string', 'index': 'not_analyzed'},
'location': {'type': 'geo_point'}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Python代码使用elasticsearch-dsl == 0.0.11
test_location = '53.5411062377, -2.11485504709'
test_distance = "3miles"
location_filter = F("geo_distance",
location=test_location,
distance=test_distance)
query = query.filter("nested",
path="addresses",
filter=location_filter)
Run Code Online (Sandbox Code Playgroud)
库生成的查询:
{'query': {'filtered': {'filter': {'nested': {'filter': {'geo_distance': {'distance': u'3miles', 'location': '53.5411062377, -2.11485504709'}}, 'path': 'addresses'}}, 'query': {'match_all': {}}}}}
Run Code Online (Sandbox Code Playgroud)
我们使用相同的映射在新的2.3上创建了一个全新的索引.
更新到elasticsearch-dsl == 2.1.0并尝试将过滤器转换为查询后:
geo_query = Q({"bool": {
"must": [
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用elasticsearch-dsl实现多重索引方法.基本上有两个步骤:
1.创建别名:
PUT /tweets_1/_alias/tweets_search
PUT /tweets_1/_alias/tweets_index
Run Code Online (Sandbox Code Playgroud)
2.必要时更改别名:
POST /_aliases
{
"actions": [
{ "add": { "index": "tweets_2", "alias": "tweets_search" }},
{ "remove": { "index": "tweets_1", "alias": "tweets_index" }},
{ "add": { "index": "tweets_2", "alias": "tweets_index" }}
]
}
Run Code Online (Sandbox Code Playgroud)
我只能使用elasticsearch-py(而不是dsl)实现第1步:
from elasticsearch.client import IndicesClient
IndicesClient(client).("tweets_1", "tweets_search")
IndicesClient(client).("tweets_1", "tweets_index")
Run Code Online (Sandbox Code Playgroud)
我不知道如何为第2步做到这一点.那么,elasticsearch-dsl(或者至少在elasticsearch-py中)的等价物是什么?